{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "id": "EOF1QxeqhajG"
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "!pip install rdkit-pypi\n",
    "!pip install dgllife\n",
    "!pip install --pre dgl-cu113 dglgo -f https://data.dgl.ai/wheels-test/repo.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xtojkovzWYI2"
   },
   "source": [
    "# Import Library"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "id": "NQ4wctgKhajH",
    "outputId": "b68f061d-e011-4367-8bff-68156f17b181"
   },
   "outputs": [],
   "source": [
    "import dgl \n",
    "import sys\n",
    "import torch\n",
    "import random\n",
    "import cv2\n",
    "import torchvision\n",
    "import statistics\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import torch.optim as optim\n",
    "\n",
    "from numpy import array\n",
    "from numpy import argmax\n",
    "from tensorflow.keras.utils import to_categorical\n",
    "from tensorflow.keras.callbacks import  History\n",
    "from dgllife.utils import smiles_to_bigraph, CanonicalAtomFeaturizer, AttentiveFPAtomFeaturizer\n",
    "from tqdm.notebook import tqdm, trange\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from utils.general import DATASET, get_dataset, separate_active_and_inactive_data, get_embedding_vector_class, count_lablel,data_generator, del_nan\n",
    "from utils.general import count_lablel,data_generator, del_nan, up_and_down_Samplenig\n",
    "from utils.gcn_pre_trained import get_muv_model, get_fingerprint\n",
    "from model.heterogeneous_siamese_muv import siamese_model_attentiveFp_muv, siamese_model_Canonical_muv\n",
    "\n",
    "\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "1RVgRpTmQ5rp"
   },
   "source": [
    "# Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hidden": true,
    "id": "KICtNTtqzNhy"
   },
   "outputs": [],
   "source": [
    "cache_path='./muv_dglgraph.bin'\n",
    "\n",
    "df = get_dataset(\"muv\")\n",
    "\n",
    "ids = df['mol_id'].tolist()\n",
    "load_full = False\n",
    "\n",
    "df = df.drop(columns=['mol_id'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "hidden": true,
    "id": "m_nAHT_WhajK"
   },
   "outputs": [],
   "source": [
    "muv_tasks = df.columns.values[:17].tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 485
    },
    "hidden": true,
    "id": "VGJ8QgXwzNh0",
    "outputId": "9db78d6a-83cc-49c2-c591-1c3349030b48"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MUV-466</th>\n",
       "      <th>MUV-548</th>\n",
       "      <th>MUV-600</th>\n",
       "      <th>MUV-644</th>\n",
       "      <th>MUV-652</th>\n",
       "      <th>MUV-689</th>\n",
       "      <th>MUV-692</th>\n",
       "      <th>MUV-712</th>\n",
       "      <th>MUV-713</th>\n",
       "      <th>MUV-733</th>\n",
       "      <th>MUV-737</th>\n",
       "      <th>MUV-810</th>\n",
       "      <th>MUV-832</th>\n",
       "      <th>MUV-846</th>\n",
       "      <th>MUV-852</th>\n",
       "      <th>MUV-858</th>\n",
       "      <th>MUV-859</th>\n",
       "      <th>smiles</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Cc1cccc(N2CCN(C(=O)C34CC5CC(CC(C5)C3)C4)CC2)c1C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Cn1ccnc1SCC(=O)Nc1ccc(Oc2ccccc2)cc1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>COc1cc2c(cc1NC(=O)CN1C(=O)NC3(CCc4ccccc43)C1=O...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>O=C1/C(=C/NC2CCS(=O)(=O)C2)c2ccccc2C(=O)N1c1cc...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NC(=O)NC(Cc1ccccc1)C(=O)O</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93082</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>O=C(NCc1ccccc1Cl)C1CCCO1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93083</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>COc1cc(NCCCCCN2C(=O)c3ccccc3C2=O)c2ncccc2c1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93084</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CCN(CC)c1ccc(/C=C2/C(=O)ON=C2C)cc1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93085</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Cc1cc(=O)oc2cc(OCC(=O)c3ccc4c(c3)NC(=O)CO4)ccc12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93086</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>COc1ccc([N+](=O)[O-])cc1NC(=O)c1ccc(C)o1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>93087 rows × 18 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       MUV-466  MUV-548  MUV-600  MUV-644  MUV-652  MUV-689  MUV-692  MUV-712  \\\n",
       "0          NaN      NaN      NaN      NaN      NaN      NaN      NaN      0.0   \n",
       "1          0.0      0.0      NaN      NaN      0.0      0.0      0.0      NaN   \n",
       "2          NaN      NaN      0.0      NaN      NaN      NaN      NaN      NaN   \n",
       "3          NaN      0.0      0.0      NaN      NaN      0.0      NaN      NaN   \n",
       "4          0.0      NaN      NaN      NaN      0.0      NaN      0.0      0.0   \n",
       "...        ...      ...      ...      ...      ...      ...      ...      ...   \n",
       "93082      NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "93083      NaN      NaN      NaN      NaN      NaN      NaN      NaN      0.0   \n",
       "93084      NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "93085      NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "93086      NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "\n",
       "       MUV-713  MUV-733  MUV-737  MUV-810  MUV-832  MUV-846  MUV-852  MUV-858  \\\n",
       "0          NaN      NaN      NaN      0.0      NaN      NaN      NaN      NaN   \n",
       "1          NaN      NaN      0.0      NaN      0.0      NaN      NaN      0.0   \n",
       "2          NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "3          NaN      NaN      NaN      NaN      NaN      NaN      NaN      0.0   \n",
       "4          NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "...        ...      ...      ...      ...      ...      ...      ...      ...   \n",
       "93082      NaN      NaN      NaN      NaN      NaN      0.0      NaN      NaN   \n",
       "93083      NaN      NaN      NaN      NaN      NaN      NaN      NaN      NaN   \n",
       "93084      NaN      NaN      NaN      NaN      NaN      0.0      NaN      NaN   \n",
       "93085      NaN      NaN      NaN      NaN      NaN      NaN      0.0      NaN   \n",
       "93086      NaN      NaN      NaN      NaN      NaN      NaN      0.0      NaN   \n",
       "\n",
       "       MUV-859                                             smiles  \n",
       "0          NaN    Cc1cccc(N2CCN(C(=O)C34CC5CC(CC(C5)C3)C4)CC2)c1C  \n",
       "1          0.0                Cn1ccnc1SCC(=O)Nc1ccc(Oc2ccccc2)cc1  \n",
       "2          0.0  COc1cc2c(cc1NC(=O)CN1C(=O)NC3(CCc4ccccc43)C1=O...  \n",
       "3          NaN  O=C1/C(=C/NC2CCS(=O)(=O)C2)c2ccccc2C(=O)N1c1cc...  \n",
       "4          NaN                          NC(=O)NC(Cc1ccccc1)C(=O)O  \n",
       "...        ...                                                ...  \n",
       "93082      NaN                           O=C(NCc1ccccc1Cl)C1CCCO1  \n",
       "93083      NaN        COc1cc(NCCCCCN2C(=O)c3ccccc3C2=O)c2ncccc2c1  \n",
       "93084      NaN                 CCN(CC)c1ccc(/C=C2/C(=O)ON=C2C)cc1  \n",
       "93085      NaN   Cc1cc(=O)oc2cc(OCC(=O)c3ccc4c(c3)NC(=O)CO4)ccc12  \n",
       "93086      NaN           COc1ccc([N+](=O)[O-])cc1NC(=O)c1ccc(C)o1  \n",
       "\n",
       "[93087 rows x 18 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "hidden": true,
    "id": "GEdp1FUphajL",
    "outputId": "a10d7764-89bd-40cb-f72d-6689cb3ac537"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MUV-466 one: 27  zero: 78246  NAN: 14814\n",
      "MUV-548 one: 29  zero: 78353  NAN: 14705\n",
      "MUV-600 one: 30  zero: 78359  NAN: 14698\n",
      "MUV-644 one: 30  zero: 78464  NAN: 14593\n",
      "MUV-652 one: 29  zero: 78185  NAN: 14873\n",
      "MUV-689 one: 29  zero: 78486  NAN: 14572\n",
      "MUV-692 one: 30  zero: 78443  NAN: 14614\n",
      "MUV-712 one: 28  zero: 78676  NAN: 14383\n",
      "MUV-713 one: 29  zero: 78251  NAN: 14807\n",
      "MUV-733 one: 28  zero: 78405  NAN: 14654\n",
      "MUV-737 one: 29  zero: 78396  NAN: 14662\n",
      "MUV-810 one: 29  zero: 78443  NAN: 14615\n",
      "MUV-832 one: 30  zero: 78420  NAN: 14637\n",
      "MUV-846 one: 30  zero: 78376  NAN: 14681\n",
      "MUV-852 one: 29  zero: 78436  NAN: 14622\n",
      "MUV-858 one: 29  zero: 78313  NAN: 14745\n",
      "MUV-859 one: 24  zero: 78341  NAN: 14722\n"
     ]
    }
   ],
   "source": [
    "one = []\n",
    "zero = []\n",
    "nan = []\n",
    " \n",
    "for task in muv_tasks:\n",
    "    a = list(df[task].value_counts(dropna=False).to_dict().values())\n",
    "    zero.append(a[0])\n",
    "    nan.append(a[1])\n",
    "    one.append(a[2])\n",
    "    print(task ,\"one:\" ,a[2] ,\" zero:\", a[0], \" NAN:\",a[1])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "background_save": true,
     "base_uri": "https://localhost:8080/",
     "height": 881
    },
    "hidden": true,
    "id": "QjNMCFSqhajM",
    "outputId": "3e711fda-ddf9-4e3d-dadd-08598b8d6493"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABmsAAATWCAYAAADKEZL3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACNVElEQVR4nOz9e5jVdb3//z9GziCMIMJInsiQRDRNTVELTAVT0M+28gBS5CGNkk2Jmnu7C63wgJIlZe7CYxi2M9uWSZilbfJMYeIhKxEwQTyMM4oIiOv7hz/XrxFUwIUvldvtutZ1Ne/1Wu/3az2dusbu13utukqlUgkAAAAAAABFbFR6AwAAAAAAABsysQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAADYwl19+eerq6lJXV5dbbrlllecrlUo+8IEPpK6uLoMGDaoef/TRR1NXV5fzzz9/tec9//zzU1dXl0cffTRPPvlk2rZtmyOPPPJ199Hc3JyOHTvmkEMOWev3cMstt7zu/t/MbbfdlvHjx+fZZ59d69euD7/+9a8zfvz4t3yeQYMGrfaf1+WXX/6Wzw0AAKxfYg0AAGygOnfunClTpqxy/NZbb80//vGPdO7ceZ3Pvdlmm+WQQw7JL37xizQ2Nq52zbRp07J06dIce+yx63yddXHbbbflzDPPfEfFmjPPPLPm5918881z++235+CDD675uQEAgNoSawAAYAN1xBFH5Nprr01zc3OL41OmTMmAAQOy1VZbvaXzH3vssVm2bFmmTp262ucvvfTS9OzZU0xYT9q1a5c999wzm2222dt+7RdeeOFtvyYAALybiTUAALCBOuqoo5IkP/nJT6rHmpqacu211+aYY455y+cfMmRItthii1x22WWrPPfggw/mzjvvzGc+85m0bt36Dc/z0EMP5cADD0zHjh3TvXv3nHjiiXnuuedWWXfTTTfl0EMPzRZbbJH27dvnAx/4QE444YQ89dRT1TXjx4/PKaeckiTp3bv3Kh8Hd80112Tw4MHZfPPN06FDh2y//fb56le/miVLlrS41iOPPJIjjzwyvXr1Srt27dKzZ8/st99+mT17dot111xzTQYMGJBOnTpl4403zpAhQ/LnP/+5+vyoUaPyve99L0mqe3n1o+ReT6VSyXnnnZett9467du3z4c//OHceOONq6xb3ceg/f3vf8/nPve59OnTJx07dsz73ve+DBs2LPfdd98qr7///vszePDgdOzYMZtttlm++MUv5oYbbljl4+cGDRqU/v375w9/+EP22muvdOzYsfr7s6bzHDVqVDbeeOM89NBDGTJkSDp16pTNN98855xzTpLkjjvuyD777JNOnTplu+22yxVXXPG68wEAgHejN/63IgAA4D2rS5cu+dSnPpVLL700J5xwQpJXws1GG22UI444IhdeeOFbOv9GG22UUaNG5Zvf/GbuvffefOhDH6o+92rAebMo9MQTT2TgwIFp06ZNvv/976dnz56ZOnVqvvSlL62y9h//+EcGDBiQ4447LvX19Xn00UczadKk7LPPPrnvvvvSpk2bHHfccXnmmWdy0UUX5ec//3k233zzJEm/fv2SJH/7299y0EEHZezYsenUqVMeeuihnHvuubnrrrvyu9/9rnqtgw46KCtXrsx5552XrbbaKk899VRuu+22Fh+tNmHChJxxxhn53Oc+lzPOOCPLly/PxIkT89GPfjR33XVX+vXrl//6r//KkiVL8rOf/Sy333579bWv7mt1zjzzzJx55pk59thj86lPfSoLFizI8ccfn5UrV6Zv375vOM/HH388m266ac4555xsttlmeeaZZ3LFFVdkjz32yJ///Ofq6xcuXJiBAwemU6dOufjii9OjR4/85Cc/We3cX11/9NFH59RTT82ECROy0UYbrdU8k2TFihU57LDDcuKJJ+aUU07J1VdfndNPPz3Nzc259tprc9ppp2WLLbbIRRddlFGjRqV///7Zdddd3/D9AgDAu0YFAADYoFx22WWVJJW777678vvf/76SpDJnzpxKpVKp7L777pVRo0ZVKpVKZYcddqgMHDiw+rq5c+dWklQmTpy42vNOnDixkqQyd+7c6rFHHnmkUldXVxkzZkz12IoVKyoNDQ2Vvffe+033etppp1Xq6uoqs2fPbnH8gAMOqCSp/P73v1/t615++eXKihUrKvPmzaskqfzv//7vG+7zjc5x6623VpJU7r333kqlUqk89dRTlSSVCy+88HVfO3/+/Err1q0rJ510Uovjzz33XKWhoaFy+OGHV4998YtfrKzpv5o1NjZW2rdvX/m3f/u3Fsf/+Mc/VpKs9p/XZZdd9rrne+mllyrLly+v9OnTp/LlL3+5evyUU06p1NXVVe6///4W64cMGbLK3AcOHFhJUrn55pvfcO+vN89KpVL57Gc/W0lSufbaa6vHVqxYUdlss80qSSp/+tOfqseffvrpSqtWrSpf+cpX3vB6AADwbuJj0AAAYAM2cODAbLvttrn00ktz33335e67767JR6C9qnfv3tl3330zderULF++PEly4403ZtGiRWt0nd///vfZYYcdWtyVkyTDhw9fZe3ixYtz4oknZsstt0zr1q3Tpk2bbL311kle+di1NfHII49k+PDhaWhoSKtWrdKmTZsMHDiwxTm6deuWbbfdNhMnTsykSZPy5z//OS+//HKL8/zmN7/JSy+9lM985jN56aWXqo/27dtn4MCBLT5GbG3cfvvtefHFFzNixIgWx/faa6/qe30jL730UiZMmJB+/fqlbdu2ad26ddq2bZu//e1vLWZ06623pn///tU7jl716kfnvVbXrl3z8Y9/fJXjazLPV9XV1eWggw6q/ty6det84AMfyOabb55ddtmlerxbt27p0aNH5s2b96bvFwAA3i18DBoAAGzA6urq8rnPfS7f/e538+KLL2a77bbLRz/60dWuffW7ZVauXLna51966aUkSZs2bVocP/bYYzNixIhcf/31+dSnPpXLLrssG2+8cQ4//PA33d/TTz+d3r17r3K8oaGhxc8vv/xyBg8enMcffzz/9V//lR133DGdOnXKyy+/nD333DNLly5902s9//zz+ehHP5r27dvnm9/8Zrbbbrt07NgxCxYsyGGHHVY9R11dXW6++eacddZZOe+883LyySenW7duGTFiRL71rW+lc+fOeeKJJ5Iku++++2qv9erHhK2tp59+erXv//WOvdZXvvKVfO9738tpp52WgQMHpmvXrtloo41y3HHHtZjR6829Z8+eqz3v6j62bU3n+aqOHTumffv2LY61bds23bp1W+Xcbdu2zYsvvvim7xcAAN4txBoAANjAjRo1Kl/72tfygx/8IN/61rded1337t3TqlWr/POf/1zt8//85z/TqlWrbLrppi2OH3bYYenatWsuvfTSDBw4ML/61a/ymc98JhtvvPGb7m3TTTfNokWLVjn+2mNz5szJvffem8svvzyf/exnq8f//ve/v+k1XvW73/0ujz/+eG655Zbq3R9JWnwPzau23nrrTJkyJUny8MMP56c//WnGjx+f5cuX5wc/+EG6d++eJPnZz362Rne8rKlXZ/t6M9lmm23e8PU//vGP85nPfCYTJkxocfypp57KJpts0uI6rwan115jderq6lY5tjbzBACADZ2PQQMAgA3c+973vpxyyikZNmxYi9DxWu3bt8/ee++d66+/fpW7Gl588cVcf/312WeffVa5O6J9+/YZPnx4ZsyYkXPPPTcrVqxY449a23fffXP//ffn3nvvbXH86quvbvHzq7GgXbt2LY5fcsklq5zz1TWvvbNjbc7xr7bbbrucccYZ2XHHHfOnP/0pSTJkyJC0bt06//jHP7Lbbrut9vFm+1mdPffcM+3bt8/UqVNbHL/tttvW6GPB6urqVnl/N9xwwyoBbuDAgZkzZ04eeOCBFsenTZv2ptf412slaz9PAADYELmzBgAAyDnnnLPG6/bdd98MGDAgY8eOzVZbbZX58+fnwgsvzBNPPPG6/2f+sccem+9973uZNGlSPvjBD2avvfZao+uNHTs2l156aQ4++OB885vfTM+ePTN16tQ89NBDLdZ98IMfzLbbbpuvfvWrqVQq6datW375y1/mpptuWuWcO+64Y5LkO9/5Tj772c+mTZs26du3b/baa6907do1J554Yr7+9a+nTZs2mTp16iqh6C9/+Uu+9KUv5dOf/nT69OmTtm3b5ne/+13+8pe/5Ktf/WqSZJtttslZZ52V//zP/8wjjzySAw88MF27ds0TTzyRu+66K506dcqZZ57ZYj/nnntuPvGJT6RVq1bZaaed0rZt21X23rVr14wbNy7f/OY3c9xxx+XTn/50FixYkPHjx6/Rx6ANHTo0l19+eT74wQ9mp512yqxZszJx4sRsscUWq537Jz7xiZx11lnp2bNnrr766urc1+Rj3NZ0ngAAgDtrAACAtTBgwID88Y9/TO/evTNu3LgccMABGTduXHr37p3bbrstAwYMWO3rdtlll+yyyy6pVCprfFdN8sr3sNx6663p169fvvCFL+Too49O+/btM3ny5Bbr2rRpk1/+8pfZbrvtcsIJJ+Soo47K4sWL89vf/naVcw4aNCinn356fvnLX2afffbJ7rvvnlmzZmXTTTfNDTfckI4dO+boo4/OMccck4033jjXXHPNKnvadttt8/3vfz+f+tSncuihh+aXv/xlLrjggpx11lnVdaeffnp+9rOf5eGHH85nP/vZDBkyJKeeemrmzZuXj33sY9V1w4cPz3HHHZfvf//7GTBgQHbfffc8/vjjrzuTs846K2effXZmzJiRQw45JBdddFF+8IMfpG/fvm86z+985zs5+uijc/bZZ2fYsGG5/vrr8/Of/zzbbrtti3W9evXKrbfemu222y4nnnhiRowYkbZt21bf379+ZNrrWdN5AgAASV2lUqmU3gQAAADvfJ///Ofzk5/8JE8//fRq7/wBAADWjY9BAwAAYBVnnXVWevXqlfe///15/vnn86tf/So/+tGPcsYZZwg1AABQY2INAAAAq2jTpk0mTpyYxx57LC+99FL69OmTSZMm5d///d9Lbw0AAN5zfAwaAAAAAABAQRuV3gAAAAAAAMCGTKwBAAAAAAAoSKwBAAAAAAAoqHXpDbyXvPzyy3n88cfTuXPn1NXVld4OAAAAAABQUKVSyXPPPZdevXplo41e//4ZsaaGHn/88Wy55ZaltwEAAAAAALyDLFiwIFtsscXrPi/W1FDnzp2TvDL0Ll26FN4NAAAAAABQUnNzc7bccstqP3g9Yk0NvfrRZ126dBFrAAAAAACAJHnTr055/Q9IAwAAAAAAYL0TawAAAAAAAAoSawAAAAAAAArynTUAAAAAAPAOt3LlyqxYsaL0NniNVq1apXXr1m/6nTRvRqwBAAAAAIB3sOeffz6PPfZYKpVK6a2wGh07dszmm2+etm3brvM5xBoAAAAAAHiHWrlyZR577LF07Ngxm2222Vu+g4PaqVQqWb58eZ588snMnTs3ffr0yUYbrdu3z4g1AAAAAADwDrVixYpUKpVsttlm6dChQ+nt8BodOnRImzZtMm/evCxfvjzt27dfp/OsW+IBAAAAAADeNu6oeeda17tpWpyjBvsAAAAAAABgHYk1AAAAAAAABfnOGgAAAAAAeJepO/Pt/Vi0ytcrb+v1Vufyyy/P2LFj8+yzz5beSs25swYAAAAAAFgvbrvttrRq1SoHHnjgWr1um222yYUXXtji2BFHHJGHH364hrt75xBrAAAAAACA9eLSSy/NSSedlJkzZ2b+/Plv6VwdOnRIjx49arSzdxaxBgAAAAAAqLklS5bkpz/9ab7whS9k6NChufzyy1s8f/3112e33XZL+/bt07179xx22GFJkkGDBmXevHn58pe/nLq6utTVvfKRb5dffnk22WSTJMlf//rX1NXV5aGHHmpxzkmTJmWbbbZJpfLKx7Y98MADOeigg7LxxhunZ8+eGTlyZJ566qn1+8bXgVgDAAAAAADU3DXXXJO+ffumb9++Ofroo3PZZZdVI8oNN9yQww47LAcffHD+/Oc/5+abb85uu+2WJPn5z3+eLbbYImeddVYWLlyYhQsXrnLuvn37Ztddd83UqVNbHL/66qszfPjw1NXVZeHChRk4cGB23nnn3HPPPZk+fXqeeOKJHH744ev/za+l1qU3AAAAAAAAvPdMmTIlRx99dJLkwAMPzPPPP5+bb745+++/f771rW/lyCOPzJlnnlld/6EPfShJ0q1bt7Rq1SqdO3dOQ0PD655/xIgRmTx5cr7xjW8kSR5++OHMmjUrV155ZZLk4osvzoc//OFMmDCh+ppLL700W265ZR5++OFst912NX/P68qdNQAAAAAAQE399a9/zV133ZUjjzwySdK6descccQRufTSS5Mks2fPzn777feWrnHkkUdm3rx5ueOOO5IkU6dOzc4775x+/folSWbNmpXf//732XjjjauPD37wg0mSf/zjH2/p2rXmzhoAAAAAAKCmpkyZkpdeeinve9/7qscqlUratGmTxsbGdOjQ4S1fY/PNN8++++6bq6++OnvuuWd+8pOf5IQTTqg+//LLL2fYsGE599xzV/vadxKxBgAAAAAAqJmXXnopV155ZS644IIMHjy4xXOf/OQnM3Xq1Oy00065+eab87nPfW6152jbtm1Wrlz5ptcaMWJETjvttBx11FH5xz/+Ub2TJ0k+/OEP59prr80222yT1q3f2TnEx6ABAAAAAAA186tf/SqNjY059thj079//xaPT33qU5kyZUq+/vWv5yc/+Um+/vWv58EHH8x9992X8847r3qObbbZJn/4wx/yz3/+M0899dTrXuuwww5Lc3NzvvCFL2TfffdtcSfPF7/4xTzzzDM56qijctddd+WRRx7JjBkzcswxx6xRCHo7vbNTEgAAAAAAsIrK1yult/C6pkyZkv333z/19fWrPPfJT34yEyZMSJcuXfI///M/+cY3vpFzzjknXbp0ycc+9rHqurPOOisnnHBCtt122yxbtiyVyurfb5cuXTJs2LD8z//8T/X7cF7Vq1ev/PGPf8xpp52WIUOGZNmyZdl6661z4IEHZqON3ln3stRVXu8dstaam5tTX1+fpqamdOnSpfR2AAAAAAB4l3vxxRczd+7c9O7dO+3bty+9HVbjjf4ZrWk3eGelIwAAAAAAgA2MWAMAAAAAAFCQWAMAAAAAAFCQWAMAAAAAAFCQWAMAAAAAAFCQWAMAAAAAAFCQWAMAAAAAAFBQ0Vjz0ksv5Ywzzkjv3r3ToUOHvP/9789ZZ52Vl19+ubqmUqlk/Pjx6dWrVzp06JBBgwbl/vvvb3GeZcuW5aSTTkr37t3TqVOnHHLIIXnsscdarGlsbMzIkSNTX1+f+vr6jBw5Ms8++2yLNfPnz8+wYcPSqVOndO/ePWPGjMny5cvX2/sHAAAAAAAoGmvOPffc/OAHP8jkyZPz4IMP5rzzzsvEiRNz0UUXVdecd955mTRpUiZPnpy77747DQ0NOeCAA/Lcc89V14wdOzbXXXddpk2blpkzZ+b555/P0KFDs3Llyuqa4cOHZ/bs2Zk+fXqmT5+e2bNnZ+TIkdXnV65cmYMPPjhLlizJzJkzM23atFx77bU5+eST355hAAAAAAAAG6S6SqVSKXXxoUOHpmfPnpkyZUr12Cc/+cl07NgxV111VSqVSnr16pWxY8fmtNNOS/LKXTQ9e/bMueeemxNOOCFNTU3ZbLPNctVVV+WII45Ikjz++OPZcsst8+tf/zpDhgzJgw8+mH79+uWOO+7IHnvskSS54447MmDAgDz00EPp27dvbrzxxgwdOjQLFixIr169kiTTpk3LqFGjsnjx4nTp0uVN309zc3Pq6+vT1NS0RusBAAAAAOCNvPjii5k7d2569+6d9u3bV4/X1b29+yhXEtbdLbfckn333TeNjY3ZZJNN1tt1Xu+fUbLm3aDonTX77LNPbr755jz88MNJknvvvTczZ87MQQcdlCSZO3duFi1alMGDB1df065duwwcODC33XZbkmTWrFlZsWJFizW9evVK//79q2tuv/321NfXV0NNkuy5556pr69vsaZ///7VUJMkQ4YMybJlyzJr1qzV7n/ZsmVpbm5u8QAAAAAAgA3dqFGj8v/+3/972643aNCgjB07tsWxvfbaKwsXLkx9ff3bto911brkxU877bQ0NTXlgx/8YFq1apWVK1fmW9/6Vo466qgkyaJFi5IkPXv2bPG6nj17Zt68edU1bdu2TdeuXVdZ8+rrFy1alB49eqxy/R49erRY89rrdO3aNW3btq2uea2zzz47Z5555tq+bQAAAAAAYD1r27ZtGhoaSm9jjRS9s+aaa67Jj3/841x99dX505/+lCuuuCLnn39+rrjiihbr6l5zP1elUlnl2Gu9ds3q1q/Lmn91+umnp6mpqfpYsGDBG+4JAAAAAAA2NIMGDcqYMWNy6qmnplu3bmloaMj48eNbrJk0aVJ23HHHdOrUKVtuuWVGjx6d559/vsWaP/7xjxk4cGA6duyYrl27ZsiQIWlsbMyoUaNy66235jvf+U7q6upSV1eXRx99NLfcckvq6ury7LPPpqmpKR06dMj06dNbnPPnP/95OnXqVL3WP//5zxxxxBHp2rVrNt100xx66KF59NFH1+d4khSONaecckq++tWv5sgjj8yOO+6YkSNH5stf/nLOPvvsJKkWr9fe2bJ48eLqXTANDQ1Zvnx5Ghsb33DNE088scr1n3zyyRZrXnudxsbGrFixYpU7bl7Vrl27dOnSpcUDAAAAAABo6YorrkinTp1y55135rzzzstZZ52Vm266qfr8RhttlO9+97uZM2dOrrjiivzud7/LqaeeWn1+9uzZ2W+//bLDDjvk9ttvz8yZMzNs2LCsXLky3/nOdzJgwIAcf/zxWbhwYRYuXJgtt9yyxfXr6+tz8MEHZ+rUqS2OX3311Tn00EOz8cYb54UXXsi+++6bjTfeOH/4wx8yc+bMbLzxxjnwwAOzfPny9TqforHmhRdeyEYbtdxCq1at8vLLLydJevfunYaGhhb/wJYvX55bb701e+21V5Jk1113TZs2bVqsWbhwYebMmVNdM2DAgDQ1NeWuu+6qrrnzzjvT1NTUYs2cOXOycOHC6poZM2akXbt22XXXXWv8zgEAAAAAYMOx00475etf/3r69OmTz3zmM9ltt91y8803V58fO3Zs9t133/Tu3Tsf//jH841vfCM//elPq8+fd9552W233fL9738/H/rQh7LDDjvkS1/6Urp37576+vq0bds2HTt2TENDQxoaGtKqVatV9jBixIj84he/yAsvvJAkaW5uzg033JCjjz46STJt2rRstNFG+dGPfpQdd9wx22+/fS677LLMnz8/t9xyy3qdT9HvrBk2bFi+9a1vZauttsoOO+yQP//5z5k0aVKOOeaYJK98LNnYsWMzYcKE9OnTJ3369MmECRPSsWPHDB8+PMkrNezYY4/NySefnE033TTdunXLuHHjsuOOO2b//fdPkmy//fY58MADc/zxx+eSSy5Jknz+85/P0KFD07dv3yTJ4MGD069fv4wcOTITJ07MM888k3HjxuX44493xwwAAAAAALwFO+20U4ufN9988yxevLj68+9///tMmDAhDzzwQJqbm/PSSy/lxRdfzJIlS9KpU6fMnj07n/70p9/SHg4++OC0bt06119/fY488shce+216dy5cwYPHpwkmTVrVv7+97+nc+fOLV734osv5h//+MdbuvabKRprLrroovzXf/1XRo8encWLF6dXr1454YQT8rWvfa265tRTT83SpUszevToNDY2Zo899siMGTNaDOvb3/52WrduncMPPzxLly7Nfvvtl8svv7xFOZs6dWrGjBlTHfohhxySyZMnV59v1apVbrjhhowePTp77713OnTokOHDh+f8889/GyYBAAAAAADvXW3atGnxc11dXfVTtubNm5eDDjooJ554Yr7xjW+kW7dumTlzZo499tisWLEiSdKhQ4e3vIe2bdvmU5/6VK6++uoceeSRufrqq3PEEUekdetXUsnLL7+cXXfddZWPSkuSzTbb7C1f/40UjTWdO3fOhRdemAsvvPB119TV1WX8+PGrfNnQv2rfvn0uuuiiXHTRRa+7plu3bvnxj3/8hvvZaqut8qtf/erNtg0AAAAAANTIPffck5deeikXXHBB9atT/vUj0JJX7sy5+eabc+aZZ672HG3bts3KlSvf9FojRozI4MGDc//99+f3v/99vvGNb1Sf+/CHP5xrrrkmPXr0eNs/cavod9YAAAAAAAAbtm233TYvvfRSLrroojzyyCO56qqr8oMf/KDFmtNPPz133313Ro8enb/85S956KGHcvHFF+epp55KkmyzzTa588478+ijj+app56q3rXzWgMHDkzPnj0zYsSIbLPNNtlzzz2rz40YMSLdu3fPoYcemv/7v//L3Llzc+utt+bf//3f89hjj62/AUSsAQAAAACAd51K5e19rE8777xzJk2alHPPPTf9+/fP1KlTc/bZZ7dYs91222XGjBm5995785GPfCQDBgzI//7v/1Y/wmzcuHFp1apV+vXrl8022yzz589f7bXq6upy1FFH5d57782IESNaPNexY8f84Q9/yFZbbZXDDjss22+/fY455pgsXbp0vd9pU1eprO8xbziam5tTX1+fpqamt/0WKQAAAAAA3ntefPHFzJ07N71790779u1Lb4fVeKN/RmvaDdxZAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUJBYAwAAAAAAUFDr0hsAAADWj7q69XPeSmX9nBcAAFgL6+sP/tfjXwTWK3fWAAAAAAAANTVq1KjU1dXlnHPOaXH8F7/4RepWE5r69u2btm3b5p///Ocqzw0aNCh1dXWZNm1ai+MXXnhhttlmm5ruuxSxBgBgHdXV1f4BAAAA7xXt27fPueeem8bGxjdcN3PmzLz44ov59Kc/ncsvv/x1z3XGGWdkxYoV62Gn5Yk1ALxj+T/CYcPjv/ew4fHf+9oyz9oz09ozU97p/I5C7ey///5paGjI2Wef/YbrpkyZkuHDh2fkyJG59NJLU1nNR64dddRRaWpqyg9/+MP1td2ixBrYgPnjo7bMEwAAgLebfxeFDc8997zyeDdo1apVJkyYkIsuuiiPPfbYatc899xz+Z//+Z8cffTROeCAA7JkyZLccsstq6zr0qVL/uM//iNnnXVWlixZsp53/vYTawAAAAAAWC/WR1AUFd9d/u3f/i0777xzvv71r6/2+WnTpqVPnz7ZYYcd0qpVqxx55JGZMmXKateOHj067du3z6RJk9bnlosQa3jX8D/qAG+d/y0FeGv87ygAAKy9c889N1dccUUeeOCBVZ6bMmVKjj766OrPRx99dH7+85/n2WefXWVtu3btctZZZ2XixIl56qmn1ueW33ZiDQAAAAAAsN587GMfy5AhQ/If//EfLY4/8MADufPOO3PqqaemdevWad26dfbcc88sXbo0P/nJT1Z7rqOPPjrbbLNNvvnNb74dW3/btC69AQAAAAAA4L3tnHPOyc4775ztttuuemzKlCn52Mc+lu9973st1l511VWZMmVKvvCFL6xyno022ihnn312DjvssNU+/27lzhoAAAAAAGC92nHHHTNixIhcdNFFSZIVK1bkqquuylFHHZX+/fu3eBx33HGZNWtW7r333tWe6+CDD84ee+yRSy655O18C+uVO2sAAAAAAOBd5p67KzU712671exUb+gb3/hGfvrTnyZJrr/++jz99NP5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BYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABYk1AAAAAAAABRWPNf/85z9z9NFHZ9NNN03Hjh2z8847Z9asWdXnK5VKxo8fn169eqVDhw4ZNGhQ7r///hbnWLZsWU466aR07949nTp1yiGHHJLHHnusxZrGxsaMHDky9fX1qa+vz8iRI/Pss8+2WDN//vwMGzYsnTp1Svfu3TNmzJgsX758vb13AAAAAACAorGmsbExe++9d9q0aZMbb7wxDzzwQC644IJssskm1TXnnXdeJk2alMmTJ+fuu+9OQ0NDDjjggDz33HPVNWPHjs11112XadOmZebMmXn++eczdOjQrFy5srpm+PDhmT17dqZPn57p06dn9uzZGTlyZPX5lStX5uCDD86SJUsyc+bMTJs2Lddee21OPvnkt2UWAAAAAADAhqmuUqlUSl38q1/9av74xz/m//7v/1b7fKVSSa9evTJ27NicdtppSV65i6Znz54599xzc8IJJ6SpqSmbbbZZrrrqqhxxxBFJkscffzxbbrllfv3rX2fIkCF58MEH069fv9xxxx3ZY489kiR33HFHBgwYkIceeih9+/bNjTfemKFDh2bBggXp1atXkmTatGkZNWpUFi9enC5durzp+2lubk59fX2amprWaD1rp66u9ucs99v/zmCmtWWetWemtWemtWWetWemtbU+5pmYaa1tyPNMzLTWzLP2zLT2zLS2zLP2zLS2/E1ae35H313WtBsUvbPm+uuvz2677ZZPf/rT6dGjR3bZZZf88Ic/rD4/d+7cLFq0KIMHD64ea9euXQYOHJjbbrstSTJr1qysWLGixZpevXqlf//+1TW333576uvrq6EmSfbcc8/U19e3WNO/f/9qqEmSIUOGZNmyZS0+lu1fLVu2LM3NzS0eAAAAAAAAa6NorHnkkUdy8cUXp0+fPvnNb36TE088MWPGjMmVV16ZJFm0aFGSpGfPni1e17Nnz+pzixYtStu2bdO1a9c3XNOjR49Vrt+jR48Wa157na5du6Zt27bVNa919tlnV78Dp76+PltuueXajgAAAAAAANjAFY01L7/8cj784Q9nwoQJ2WWXXXLCCSfk+OOPz8UXX9xiXd1r7uuqVCqrHHut165Z3fp1WfOvTj/99DQ1NVUfCxYseMM9AQAAAAAAvFbRWLP55punX79+LY5tv/32mT9/fpKkoaEhSVa5s2Xx4sXVu2AaGhqyfPnyNDY2vuGaJ554YpXrP/nkky3WvPY6jY2NWbFixSp33LyqXbt26dKlS4sHAAAAAADA2igaa/bee+/89a9/bXHs4YcfztZbb50k6d27dxoaGnLTTTdVn1++fHluvfXW7LXXXkmSXXfdNW3atGmxZuHChZkzZ051zYABA9LU1JS77rqruubOO+9MU1NTizVz5szJwoULq2tmzJiRdu3aZdddd63xOwcAAAAAAHhF65IX//KXv5y99torEyZMyOGHH5677ror//3f/53//u//TvLKx5KNHTs2EyZMSJ8+fdKnT59MmDAhHTt2zPDhw5Mk9fX1OfbYY3PyySdn0003Tbdu3TJu3LjsuOOO2X///ZO8crfOgQcemOOPPz6XXHJJkuTzn/98hg4dmr59+yZJBg8enH79+mXkyJGZOHFinnnmmYwbNy7HH3+8O2YAAAAAAID1pmis2X333XPdddfl9NNPz1lnnZXevXvnwgsvzIgRI6prTj311CxdujSjR49OY2Nj9thjj8yYMSOdO3eurvn2t7+d1q1b5/DDD8/SpUuz33775fLLL0+rVq2qa6ZOnZoxY8Zk8ODBSZJDDjkkkydPrj7fqlWr3HDDDRk9enT23nvvdOjQIcOHD8/555//NkwCAAAAAADYUNVVKpVK6U28VzQ3N6e+vj5NTU3uxlkP6upqf84N/bffTGvLPGvPTGvPTGvLPGvPTGtrfcwzMdNa25DnmZhprZln7Zlp7ZlpbZln7ZlpbfmbtPb8jr67rGk3KPqdNQAAAAAAABs6sQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKAgsQYAAAAAAKCgorFm/Pjxqaura/FoaGioPl+pVDJ+/Pj06tUrHTp0yKBBg3L//fe3OMeyZcty0kknpXv37unUqVMOOeSQPPbYYy3WNDY2ZuTIkamvr099fX1GjhyZZ599tsWa+fPnZ9iwYenUqVO6d++eMWPGZPny5evtvQMAAAAAACTvgDtrdthhhyxcuLD6uO+++6rPnXfeeZk0aVImT56cu+++Ow0NDTnggAPy3HPPVdeMHTs21113XaZNm5aZM2fm+eefz9ChQ7Ny5crqmuHDh2f27NmZPn16pk+fntmzZ2fkyJHV51euXJmDDz44S5YsycyZMzNt2rRce+21Ofnkk9+eIQAAAAAAABusukqlUil18fHjx+cXv/hFZs+evcpzlUolvXr1ytixY3PaaacleeUump49e+bcc8/NCSeckKampmy22Wa56qqrcsQRRyRJHn/88Wy55Zb59a9/nSFDhuTBBx9Mv379cscdd2SPPfZIktxxxx0ZMGBAHnroofTt2zc33nhjhg4dmgULFqRXr15JkmnTpmXUqFFZvHhxunTpskbvp7m5OfX19Wlqalrj17Dm6upqf85yv/3vDGZaW+ZZe2Zae2ZaW+ZZe2ZaW+tjnomZ1tqGPM/ETGvNPGvPTGvPTGvLPGvPTGvL36S153f03WVNu0HxO2v+9re/pVevXundu3eOPPLIPPLII0mSuXPnZtGiRRk8eHB1bbt27TJw4MDcdtttSZJZs2ZlxYoVLdb06tUr/fv3r665/fbbU19fXw01SbLnnnumvr6+xZr+/ftXQ02SDBkyJMuWLcusWbNed+/Lli1Lc3NziwcAAAAAAMDaKBpr9thjj1x55ZX5zW9+kx/+8IdZtGhR9tprrzz99NNZtGhRkqRnz54tXtOzZ8/qc4sWLUrbtm3TtWvXN1zTo0ePVa7do0ePFmtee52uXbumbdu21TWrc/bZZ1e/B6e+vj5bbrnlWk4AAAAAAADY0BWNNZ/4xCfyyU9+MjvuuGP233//3HDDDUmSK664orqm7jX3dFUqlVWOvdZr16xu/bqsea3TTz89TU1N1ceCBQvecF8AAAAAAACvVfxj0P5Vp06dsuOOO+Zvf/tbGhoakmSVO1sWL15cvQumoaEhy5cvT2Nj4xuueeKJJ1a51pNPPtlizWuv09jYmBUrVqxyx82/ateuXbp06dLiAQAAAAAAsDbeUbFm2bJlefDBB7P55pund+/eaWhoyE033VR9fvny5bn11luz1157JUl23XXXtGnTpsWahQsXZs6cOdU1AwYMSFNTU+66667qmjvvvDNNTU0t1syZMycLFy6srpkxY0batWuXXXfddb2+ZwAAAAAAYMPWuuTFx40bl2HDhmWrrbbK4sWL881vfjPNzc357Gc/m7q6uowdOzYTJkxInz590qdPn0yYMCEdO3bM8OHDkyT19fU59thjc/LJJ2fTTTdNt27dMm7cuOrHqiXJ9ttvnwMPPDDHH398LrnkkiTJ5z//+QwdOjR9+/ZNkgwePDj9+vXLyJEjM3HixDzzzDMZN25cjj/+eHfLAAAAAAAA61XRWPPYY4/lqKOOylNPPZXNNtsse+65Z+64445svfXWSZJTTz01S5cuzejRo9PY2Jg99tgjM2bMSOfOnavn+Pa3v53WrVvn8MMPz9KlS7Pffvvl8ssvT6tWraprpk6dmjFjxmTw4MFJkkMOOSSTJ0+uPt+qVavccMMNGT16dPbee+906NAhw4cPz/nnn/82TQIAAAAAANhQ1VUqlUrpTbxXNDc3p76+Pk1NTe7IWQ/q6mp/zg39t99Ma8s8a89Ma89Ma8s8a89Ma2t9zDMx01rbkOeZmGmtmWftmWntmWltmWftmWlt+Zu09vyOvrusaTd4R31nDQAAAAAAwIZGrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChIrAEAAAAAAChonWLN0qVL88ILL1R/njdvXi688MLMmDGjZhsDAAAAAADYEKxTrDn00ENz5ZVXJkmeffbZ7LHHHrngggty6KGH5uKLL67pBgEAAAAAAN7L1inW/OlPf8pHP/rRJMnPfvaz9OzZM/PmzcuVV16Z7373uzXdIAAAAAAAwHvZOsWaF154IZ07d06SzJgxI4cddlg22mij7Lnnnpk3b15NNwgAAAAAAPBetk6x5gMf+EB+8YtfZMGCBfnNb36TwYMHJ0kWL16cLl261HSDAAAAAAAA72XrFGu+9rWvZdy4cdlmm23ykY98JAMGDEjyyl02u+yyS003CAAAAAAA8F5WV6lUKuvywkWLFmXhwoX50Ic+lI02eqX53HXXXenSpUs++MEP1nST7xbNzc2pr69PU1OTO4zWg7q62p9z3X773zvMtLbMs/bMtPbMtLbMs/bMtLbWxzwTM621DXmeiZnWmnnWnpnWnpnWlnnWnpnWlr9Ja8/v6LvLmnaDdbqzJkkaGhrSuXPn3HTTTVm6dGmSZPfdd99gQw0AAAAAAMC6WKdY8/TTT2e//fbLdtttl4MOOigLFy5Mkhx33HE5+eSTa7pBAAAAAACA97J1ijVf/vKX06ZNm8yfPz8dO3asHj/iiCMyffr0mm0OAAAAAADgva71urxoxowZ+c1vfpMtttiixfE+ffpk3rx5NdkYAAAAAADAhmCd7qxZsmRJiztqXvXUU0+lXbt2b3lTAAAAAAAAG4p1ijUf+9jHcuWVV1Z/rqury8svv5yJEydm3333rdnmAAAAAAAA3uvW6WPQJk6cmEGDBuWee+7J8uXLc+qpp+b+++/PM888kz/+8Y+13iMAAAAAAMB71jrdWdOvX7/85S9/yUc+8pEccMABWbJkSQ477LD8+c9/zrbbblvrPQIAAAAAALxn1VUqlUrpTbxXNDc3p76+Pk1NTenSpUvp7bzn1NXV/pwb+m+/mdaWedaemdaemdaWedaemdbW+phnYqa1tiHPMzHTWjPP2jPT2jPT2jLP2jPT2vI3ae35HX13WdNusE531kyfPj0zZ86s/vy9730vO++8c4YPH57GxsZ1OSUAAAAAAMAGaZ1izSmnnJLm5uYkyX333ZevfOUrOeigg/LII4/kK1/5Sk03CAAAAAAA8F7Wel1eNHfu3PTr1y9Jcu2112bYsGGZMGFC/vSnP+Wggw6q6QYBAAAAAADey9bpzpq2bdvmhRdeSJL89re/zeDBg5Mk3bp1q95xAwAAAAAAwJtbpztr9tlnn3zlK1/J3nvvnbvuuivXXHNNkuThhx/OFltsUdMNAgAAAAAAvJet0501kydPTuvWrfOzn/0sF198cd73vvclSW688cYceOCBNd0gAAAAAADAe1ldpVKplN7Ee0Vzc3Pq6+vT1NSULl26lN7Oe05dXe3PuaH/9ptpbZln7Zlp7ZlpbZln7Zlpba2PeSZmWmsb8jwTM60186w9M609M60t86w9M60tf5PWnt/Rd5c17Qbr9DFo/2rp0qVZsWJFi2NCBQAAAAAAwJpZp49BW7JkSb70pS+lR48e2XjjjdO1a9cWDwAAAAAAANbMOsWaU089Nb/73e/y/e9/P+3atcuPfvSjnHnmmenVq1euvPLKWu8RAAAAAADgPWudPgbtl7/8Za688soMGjQoxxxzTD760Y/mAx/4QLbeeutMnTo1I0aMqPU+AQAAAAAA3pPW6c6aZ555Jr17907yyvfTPPPMM0mSffbZJ3/4wx9qtzsAAAAAAID3uHWKNe9///vz6KOPJkn69euXn/70p0leueNmk002qdXeAAAAAAAA3vPWKdZ87nOfy7333pskOf3006vfXTN27NiccsopNd0gAAAAAADAe1ldpVKpvNWTzJ8/P/fcc08+8IEPZKeddqrFvt6VmpubU19fn6ampnTp0qX0dt5z6upqf863/tv/7mamtWWetWemtWemtWWetWemtbU+5pmYaa1tyPNMzLTWzLP2zLT2zLS2zLP2zLS2/E1ae35H313WtBus1Z01v/vd79KvX780Nze3OL7VVltlv/32y1FHHZX/+7//W7cdAwAAAAAAbIDWKtZceOGFOf7441dbf+rr63PCCSdk0qRJNdscAAAAAADAe91axZp77703Bx544Os+P3jw4MyaNWudNnL22Wenrq4uY8eOrR6rVCoZP358evXqlQ4dOmTQoEG5//77W7xu2bJlOemkk9K9e/d06tQphxxySB577LEWaxobGzNy5MjU19envr4+I0eOzLPPPttizfz58zNs2LB06tQp3bt3z5gxY7J8+fJ1ei8AAAAAAABraq1izRNPPJE2bdq87vOtW7fOk08+udabuPvuu/Pf//3fq3zfzXnnnZdJkyZl8uTJufvuu9PQ0JADDjggzz33XHXN2LFjc91112XatGmZOXNmnn/++QwdOjQrV66srhk+fHhmz56d6dOnZ/r06Zk9e3ZGjhxZfX7lypU5+OCDs2TJksycOTPTpk3Ltddem5NPPnmt3wsAAAAAAMDaWKtY8773vS/33Xff6z7/l7/8JZtvvvlabeD555/PiBEj8sMf/jBdu3atHq9UKrnwwgvzn//5nznssMPSv3//XHHFFXnhhRdy9dVXJ0mampoyZcqUXHDBBdl///2zyy675Mc//nHuu+++/Pa3v02SPPjgg5k+fXp+9KMfZcCAARkwYEB++MMf5le/+lX++te/JklmzJiRBx54ID/+8Y+zyy67ZP/9988FF1yQH/7wh6t8P8+/WrZsWZqbm1s8AAAAAAAA1sZaxZqDDjooX/va1/Liiy+u8tzSpUvz9a9/PUOHDl2rDXzxi1/MwQcfnP3337/F8blz52bRokUZPHhw9Vi7du0ycODA3HbbbUmSWbNmZcWKFS3W9OrVK/3796+uuf3221NfX5899tijumbPPfdMfX19izX9+/dPr169qmuGDBmSZcuWveHHup199tnVj1arr6/PlltuuVbvHQAAAAAAoPXaLD7jjDPy85//PNttt12+9KUvpW/fvqmrq8uDDz6Y733ve1m5cmX+8z//c43PN23atPzpT3/K3XffvcpzixYtSpL07NmzxfGePXtm3rx51TVt27ZtcUfOq2teff2iRYvSo0ePVc7fo0ePFmtee52uXbumbdu21TWrc/rpp+crX/lK9efm5mbBBgAAAAAAWCtrFWt69uyZ2267LV/4whdy+umnp1KpJEnq6uoyZMiQfP/7318leryeBQsW5N///d8zY8aMtG/f/nXX1dXVtfi5Uqmscuy1XrtmdevXZc1rtWvXLu3atXvDvQAAAAAAALyRtYo1SbL11lvn17/+dRobG/P3v/89lUolffr0WeXuljcza9asLF68OLvuumv12MqVK/OHP/whkydPrn6fzKJFi1p8D87ixYurQaihoSHLly9PY2Nji+svXrw4e+21V3XNE088scr1n3zyyRbnufPOO1s839jYmBUrVqxxfAIAAAAAAFgXa/WdNf+qa9eu2X333fORj3xkrUNNkuy333657777Mnv27Opjt912y4gRIzJ79uy8//3vT0NDQ2666abqa5YvX55bb721GmJ23XXXtGnTpsWahQsXZs6cOdU1AwYMSFNTU+66667qmjvvvDNNTU0t1syZMycLFy6srpkxY0batWvXIiYBAAAAAADU2lrfWVMrnTt3Tv/+/Vsc69SpUzbddNPq8bFjx2bChAnp06dP+vTpkwkTJqRjx44ZPnx4kqS+vj7HHntsTj755Gy66abp1q1bxo0blx133DH7779/kmT77bfPgQcemOOPPz6XXHJJkuTzn/98hg4dmr59+yZJBg8enH79+mXkyJGZOHFinnnmmYwbNy7HH398unTp8naNBAAAAAAA2AAVizVr4tRTT83SpUszevToNDY2Zo899siMGTPSuXPn6ppvf/vbad26dQ4//PAsXbo0++23Xy6//PK0atWqumbq1KkZM2ZMBg8enCQ55JBDMnny5OrzrVq1yg033JDRo0dn7733TocOHTJ8+PCcf/75b9+bBQAAAAAANkh1lUqlUnoT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AAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYg0AAAAAAEBBYs0mrr322gwcODA77bRTRowYkYceeqj0SAAAAAAAwHZMrPkTP/rRjzJ58uR8+ctfzs9//vP89//+33PMMcdk8eLFpUcDAAAAAAC2U2LNn7j66qtz6qmn5nOf+1z23XfffOtb30q/fv1y3XXXlR4NAAAAAADYTnUsPcC2Yt26dVmwYEG++MUvtru9ubk5jzzyyFu+zdq1a7N27dq211tbW5MkK1eu3HKD1qiGqQ1VeJTWD/wIW+T/TKH/33ZaXfZZfXZafdvCTrfYR+7PfXXtwM/RxE7b20b3mfhzX201+xxN7PT/Z5/VZ6fVZ6fVZZ/VZ6fV53PS6vIc3fH8sRdUKpW3PSfW/D//+Z//mQ0bNqRPnz7tbu/Tp0+WLVv2lm8zderU/P3f//1mt/fr12+LzMgH/4usGn8Vbv6gW+RRtxI7rS77rD47rb4PNvsW+8hrdqeeo9Vnp9W1je4zsdNqq9l9JnZabfZZfXZafXZaXfZZfXZaXdvoPhM7rbaa3efWsWrVqjS8zY7Emk3U1dW1e71SqWx22x9deumlueCCC9pe37hxY1599dXstttuf/ZteG9WrlyZfv36ZcmSJenevXvpcbYLdlpd9ll9dlpd9ll9dlp9dlpd9ll9dlp9dlpd9ll9dlpd9ll9dlp9dlpd9ll9dlq7KpVKVq1alaamprc9J9b8P7169UqHDh02u4pm+fLlm11t80f19fWpr69vd9uuu+66pUbcoXXv3t1fQlVmp9Vln9Vnp9Vln9Vnp9Vnp9Vln9Vnp9Vnp9Vln9Vnp9Vln9Vnp9Vnp9Vln9Vnp7Xp7a6o+aO/2Apz1ITOnTtnxIgRmTNnTrvb58yZk1GjRhWaCgAAAAAA2N65suZPXHDBBWlpackBBxyQkSNH5vrrr8/ixYtz5plnlh4NAAAAAADYTok1f+Kkk07K73//+3zta1/L0qVLM3To0Nx9990ZMGBA6dF2WPX19fnqV7+62Y+b4/2z0+qyz+qz0+qyz+qz0+qz0+qyz+qz0+qz0+qyz+qz0+qyz+qz0+qz0+qyz+qz0+1fXaVSqZQeAgAAAAAAYEfld9YAAAAAAAAUJNYAAAAAAAAUJNYAAAAAAAAUJNYAAAAAAAAUJNawTfrXf/3XjBs3Lk1NTamrq8udd95ZeqSaNnXq1Bx44IHp1q1bevfunU9+8pN54YUXSo9V06677rp85CMfSffu3dO9e/eMHDky99xzT+mxthtTp05NXV1dJk+eXHqUmnXZZZelrq6u3UtjY2PpsWref/zHf+Tv/u7vsttuu2XnnXfORz/60SxYsKD0WDVpjz322Ow5WldXl7PPPrv0aDXrzTffzP/8n/8zAwcOTJcuXfLhD384X/va17Jx48bSo9WsVatWZfLkyRkwYEC6dOmSUaNGZf78+aXHqhnv9Dl9pVLJZZddlqampnTp0iWHH354nn322TLD1oh32untt9+eMWPGpFevXqmrq8vChQuLzFlL3m6n69evzyWXXJJhw4ala9euaWpqysknn5yXXnqp3MDbuHd6jl522WXZZ5990rVr1/To0SNHHnlkHnvssTLD1oj38v2RM844I3V1dfnWt7611earNe+0z0mTJm32+enBBx9cZtga8W6eo88991zGjx+fhoaGdOvWLQcffHAWL1689YetEe+007f6Oqquri5XXnllmYGpGrGGbdLq1aszfPjwTJs2rfQo24W5c+fm7LPPzrx58zJnzpy8+eabaW5uzurVq0uPVrM+9KEP5Rvf+EaeeOKJPPHEE/nEJz6R4447zjcYqmD+/Pm5/vrr85GPfKT0KDVvv/32y9KlS9tenn766dIj1bQVK1bkkEMOSadOnXLPPffk3//933PVVVdl1113LT1aTZo/f3675+ecOXOSJJ/+9KcLT1a7Lr/88nznO9/JtGnT8txzz+WKK67IlVdemX/8x38sPVrN+tznPpc5c+bk5ptvztNPP53m5uYceeSR+Y//+I/So9WEd/qc/oorrsjVV1+dadOmZf78+WlsbMxRRx2VVatWbeVJa8c77XT16tU55JBD8o1vfGMrT1a73m6nb7zxRp588sl85StfyZNPPpnbb789v/jFLzJ+/PgCk9aGd3qO7r333pk2bVqefvrpPPzww9ljjz3S3NycV155ZStPWjve7fdH7rzzzjz22GNpamraSpPVpnezz6OPPrrd56l33333Vpyw9rzTTn/961/n0EMPzT777JMHH3ww//Zv/5avfOUr2WmnnbbypLXjnXb6p8/PpUuX5sYbb0xdXV0+9alPbeVJqboKbOOSVO64447SY2xXli9fXklSmTt3bulRtis9evSo/NM//VPpMWraqlWrKoMGDarMmTOnMnr06Mr5559feqSa9dWvfrUyfPjw0mNsVy655JLKoYceWnqM7db5559f2XPPPSsbN24sPUrNOvbYYyunnHJKu9tOOOGEyt/93d8Vmqi2vfHGG5UOHTpUfvrTn7a7ffjw4ZUvf/nLhaaqXZt+Tr9x48ZKY2Nj5Rvf+EbbbX/4wx8qDQ0Nle985zsFJqw9b/d10qJFiypJKj//+c+36ky17t187fn4449XklR++9vfbp2hati72Wdra2slSeW+++7bOkPVuD+309/97neVv/zLv6w888wzlQEDBlSuueaarT5bLXqrfU6cOLFy3HHHFZlne/BWOz3ppJN8PvoBvJu/S4877rjKJz7xia0zEFuUK2tgB9Ta2pok6dmzZ+FJtg8bNmzIzJkzs3r16owcObL0ODXt7LPPzrHHHpsjjzyy9CjbhV/+8pdpamrKwIED85nPfCa/+c1vSo9U037yk5/kgAMOyKc//en07t07+++/f773ve+VHmu7sG7duvzgBz/IKaeckrq6utLj1KxDDz00P/vZz/KLX/wiSfJv//Zvefjhh/NXf/VXhSerTW+++WY2bNiw2b/67NKlSx5++OFCU20/Fi1alGXLlqW5ubnttvr6+owePTqPPPJIwcng7bW2tqaurs6VtVWwbt26XH/99WloaMjw4cNLj1OzNm7cmJaWllx88cXZb7/9So+zXXjwwQfTu3fv7L333jnttNOyfPny0iPVrI0bN+auu+7K3nvvnTFjxqR379456KCD/LqDKnr55Zdz11135dRTTy09ClUg1sAOplKp5IILLsihhx6aoUOHlh6npj399NPZZZddUl9fnzPPPDN33HFHhgwZUnqsmjVz5sw8+eSTmTp1aulRtgsHHXRQvv/97+fee+/N9773vSxbtiyjRo3K73//+9Kj1azf/OY3ue666zJo0KDce++9OfPMM3Peeefl+9//funRat6dd96Z1157LZMmTSo9Sk275JJL8jd/8zfZZ5990qlTp+y///6ZPHly/uZv/qb0aDWpW7duGTlyZP73//7feemll7Jhw4b84Ac/yGOPPZalS5eWHq/mLVu2LEnSp0+fdrf36dOn7T7Y1vzhD3/IF7/4xUyYMCHdu3cvPU7N+ulPf5pddtklO+20U6655prMmTMnvXr1Kj1Wzbr88svTsWPHnHfeeaVH2S4cc8wxueWWW3L//ffnqquuyvz58/OJT3wia9euLT1aTVq+fHlef/31fOMb38jRRx+d2bNn5/jjj88JJ5yQuXPnlh5vu3DTTTelW7duOeGEE0qPQhV0LD0AsHWdc845eeqpp/yL0CoYPHhwFi5cmNdeey233XZbJk6cmLlz5wo278OSJUty/vnnZ/bs2X5ubZUcc8wxbf89bNiwjBw5MnvuuWduuummXHDBBQUnq10bN27MAQcckClTpiRJ9t9//zz77LO57rrrcvLJJxeerrbdcMMNOeaYY/yM9Q/oRz/6UX7wgx/khz/8Yfbbb78sXLgwkydPTlNTUyZOnFh6vJp0880355RTTslf/uVfpkOHDvnYxz6WCRMm5Mknnyw92nZj06vpKpWKK+zYJq1fvz6f+cxnsnHjxlx77bWlx6lpH//4x7Nw4cL853/+Z773ve/lxBNPzGOPPZbevXuXHq3mLFiwIN/+9rfz5JNP+ruzSk466aS2/x46dGgOOOCADBgwIHfddZdvhr8PGzduTJIcd9xx+fznP58k+ehHP5pHHnkk3/nOdzJ69OiS420Xbrzxxvzt3/6t76VsJ1xZAzuQc889Nz/5yU/ywAMP5EMf+lDpcWpe586ds9dee+WAAw7I1KlTM3z48Hz7298uPVZNWrBgQZYvX54RI0akY8eO6dixY+bOnZv/83/+Tzp27JgNGzaUHrHmde3aNcOGDcsvf/nL0qPUrL59+24WY/fdd98sXry40ETbh9/+9re577778rnPfa70KDXv4osvzhe/+MV85jOfybBhw9LS0pLPf/7zrlj8APbcc8/MnTs3r7/+epYsWZLHH38869evz8CBA0uPVvMaGxuTZLOraJYvX77Z1TZQ2vr163PiiSdm0aJFmTNnjqtqPqCuXbtmr732ysEHH5wbbrghHTt2zA033FB6rJr00EMPZfny5enfv3/b11G//e1vc+GFF2aPPfYoPd52oW/fvhkwYICvo96nXr16pWPHjr6O2kIeeuihvPDCC76W2o6INbADqFQqOeecc3L77bfn/vvv9w2GLaRSqbg0+n064ogj8vTTT2fhwoVtLwcccED+9m//NgsXLkyHDh1Kj1jz1q5dm+eeey59+/YtPUrNOuSQQ/LCCy+0u+0Xv/hFBgwYUGii7cP06dPTu3fvHHvssaVHqXlvvPFG/uIv2n9636FDh7Z/0cj717Vr1/Tt2zcrVqzIvffem+OOO670SDVv4MCBaWxszJw5c9puW7duXebOnZtRo0YVnAza+2Oo+eUvf5n77rsvu+22W+mRtju+jnr/Wlpa8tRTT7X7OqqpqSkXX3xx7r333tLjbRd+//vfZ8mSJb6Oep86d+6cAw880NdRW8gNN9yQESNG+L1f2xE/Bo1t0uuvv55f/epXba8vWrQoCxcuTM+ePdO/f/+Ck9Wms88+Oz/84Q/z4x//ON26dWv7F4wNDQ3p0qVL4elq05e+9KUcc8wx6devX1atWpWZM2fmwQcfzKxZs0qPVpO6deu22e9Q6tq1a3bbbTe/W+l9uuiiizJu3Lj0798/y5cvzz/8wz9k5cqVfhTSB/D5z38+o0aNypQpU3LiiSfm8ccfz/XXX5/rr7++9Gg1a+PGjZk+fXomTpyYjh19WvpBjRs3Ll//+tfTv3//7Lfffvn5z3+eq6++Oqecckrp0WrWvffem0qlksGDB+dXv/pVLr744gwePDif/exnS49WE97pc/rJkydnypQpGTRoUAYNGpQpU6Zk5513zoQJEwpOvW17p52++uqrWbx4cV566aUkafvmWGNjY9vVTLT3djttamrKX//1X+fJJ5/MT3/602zYsKHta6mePXumc+fOpcbeZr3dPnfbbbd8/etfz/jx49O3b9/8/ve/z7XXXpvf/e53+fSnP11w6m3bO/253zQgdurUKY2NjRk8ePDWHrUmvN0+e/bsmcsuuyyf+tSn0rdv37z44ov50pe+lF69euX4448vOPW27Z2eoxdffHFOOumkHHbYYfn4xz+eWbNm5V/+5V/y4IMPlht6G/duvi+6cuXK/PM//3OuuuqqUmOyJVRgG/TAAw9Ukmz2MnHixNKj1aS32mWSyvTp00uPVrNOOeWUyoABAyqdO3eu7L777pUjjjiiMnv27NJjbVdGjx5dOf/880uPUbNOOumkSt++fSudOnWqNDU1VU444YTKs88+W3qsmvcv//IvlaFDh1bq6+sr++yzT+X6668vPVJNu/feeytJKi+88ELpUbYLK1eurJx//vmV/v37V3baaafKhz/84cqXv/zlytq1a0uPVrN+9KMfVT784Q9XOnfuXGlsbKycffbZlddee630WDXjnT6n37hxY+WrX/1qpbGxsVJfX1857LDDKk8//XTZobdx77TT6dOnv+X9X/3qV4vOvS17u50uWrToz34t9cADD5QefZv0dvtcs2ZN5fjjj680NTVVOnfuXOnbt29l/Pjxlccff7z02Nu09/r9kQEDBlSuueaarTpjLXm7fb7xxhuV5ubmyu67717p1KlTpX///pWJEydWFi9eXHrsbdq7eY7ecMMNlb322quy0047VYYPH1658847yw1cA97NTr/73e9WunTp4nPT7UxdpVKpVKH5AAAAAAAA8D74nTUAAAAAAAAFiTUAAAAAAAAFiTUAAAAAAAAFiTUAAAAAAAAFiTUAAAAAAAAFiTUAAAAAAAAFiTUAAAAAAAAFiTUAAAAAAAAFiTUAAAA15PDDD8/kyZNLjwEAAFSRWAMAANS8SZMmpa6uLmeeeeZm95111lmpq6vLpEmTkvz52HHnnXemrq4uSXLVVVeloaEhb7zxxmbn/vCHP2TXXXfN1Vdf/Y5z1dXV5c4773xPHwsAALDjEWsAAIDtQr9+/TJz5sysWbOm7bY//OEPufXWW9O/f//39Fgnn3xy1qxZk9tuu22z+2677ba88cYbaWlp+cAzAwAAJGINAACwnfjYxz6W/v375/bbb2+77fbbb0+/fv2y//77v6fH2n333TNu3LjceOONm9134403Zvz48dl9993f9jH22GOPJMnxxx+furq6ttd//etf57jjjkufPn2yyy675MADD8x9993X7m2vvfbaDBo0KDvttFP69OmTv/7rv/6z72fWrFlpaGjI97///STJgw8+mP/23/5bunbtml133TWHHHJIfvvb376Hjx4AANjaxBoAAGC78dnPfjbTp09ve/3GG2/MKaec8r4e69RTT83cuXOzaNGitttefPHFPPDAAzn11FPf8e3nz5+fJJk+fXqWLl3a9vrrr7+ev/qrv8p9992Xn//85xkzZkzGjRuXxYsXJ0meeOKJnHfeefna176WF154IbNmzcphhx32lu9j5syZOfHEE/P9738/J598ct5888188pOfzOjRo/PUU0/l0Ucfzemnn972490AAIBtU8fSAwAAAFRLS0tLLr300rz44oupq6vL//2//zczZ87Mgw8++J4fa8yYMWlqasqMGTPy93//90n+K7w0NTWlubn5Hd/+j1fe7LrrrmlsbGy7ffjw4Rk+fHjb6//wD/+QO+64Iz/5yU9yzjnnZPHixenatWvGjh2bbt26ZcCAAW95ZdC1116bL33pS/nxj3+cj3/840mSlStXprW1NWPHjs2ee+6ZJNl3333f88cOAABsXa6sAQAAthu9evXKsccem5tuuinTp0/Psccem169er2vx+rQoUMmTpyYGTNmZOPGjalUKrnpppsyadKkdOjQ4X3PuHr16nzhC1/IkCFDsuuuu2aXXXbJ888/33ZlzVFHHZUBAwbkwx/+cFpaWnLLLbfkjTfeaPcYt912WyZPnpzZs2e3hZok6dmzZyZNmtR2tc63v/3tLF269H3PCgAAbB1iDQAAsF055ZRTMmPGjNx0001v+SPQunfvntbW1s1uf+2119K9e/fNHmvJkiW5//7787Of/SyLFy/OZz/72Q8038UXX5zbbrstX//61/PQQw9l4cKFGTZsWNatW5ck6datW5588snceuut6du3b/7X//pfGT58eF577bW2x/joRz+a3XffPdOnT0+lUmn3+NOnT8+jjz6aUaNG5Uc/+lH23nvvzJs37wPNDAAAbFliDQAAsF05+uijs27duqxbty5jxozZ7P599tknTzzxxGa3z58/P4MHD25325577pnRo0dn+vTpufHGG3P44Ye3/Xixd6NTp07ZsGFDu9seeuihTJo0Kccff3yGDRuWxsbGvPjii+3OdOzYMUceeWSuuOKKPPXUU3nxxRdz//33t5vrgQceyI9//OOce+65m73f/fffP5deemkeeeSRDB06ND/84Q/f9cwAAMDW53fWAAAA25UOHTrkueeea/vvTZ111lmZNm1azj777Jx++unp0qVL5syZkxtuuCE333zzZudPPfXUnHbaaUmSf/qnf3pPs+yxxx752c9+lkMOOST19fXp0aNH9tprr9x+++0ZN25c6urq8pWvfCUbN25se5uf/vSn+c1vfpPDDjssPXr0yN13352NGzduFpL23nvvPPDAAzn88MPTsWPHfOtb38qiRYty/fXXZ/z48WlqasoLL7yQX/ziFzn55JPf09wAAMDW5coaAABgu9O9e/fNfqTZH+2xxx556KGH8utf/zrNzc058MADM2PGjMyYMSOf/vSnNzv/qU99KvX19amvr88JJ5zwnua46qqrMmfOnPTr1y/7779/kuSaa65Jjx49MmrUqIwbNy5jxozJxz72sba32XXXXXP77bfnE5/4RPbdd9985zvfya233pr99ttvs8cfPHhw7r///tx666258MILs/POO+f555/Ppz71qey99945/fTTc8455+SMM854T3MDAABbV11l0x9wDAAAAAAAwFbjyhoAAAAAAICCxBoAAID34ZZbbskuu+zyli9v9SPLAAAA/hw/Bg0AAOB9WLVqVV5++eW3vK9Tp04ZMGDAVp4IAACoVWINAAAAAABAQX4MGgAAAAAAQEFiDQAAAAAAQEFiDQAAAAAAQEFiDQAAAAAAQEFiDQAAAAAAQEFiDQAAAAAAQEFiDQAAAAAAQEH/H9cYC9zD4zd2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 2000x1500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Importing the matplotlib library\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# Declaring the figure or the plot (y, x) or (width, height)\n",
    "plt.figure(figsize=[20, 15])\n",
    "\n",
    "X = np.arange(1,len(muv_tasks)+1)\n",
    "plt.bar(X + 0.2, one, color = 'g', width = 0.25)\n",
    "plt.bar(X + 0.4, zero, color = 'b', width = 0.25)\n",
    "plt.bar(X + 0.6, nan, color = 'r', width = 0.25)\n",
    "\n",
    "# Creating the legend of the bars in the plot\n",
    "plt.legend(['Active' , 'Inactive' ,'NAN'])\n",
    "# Overiding the x axis with the country names\n",
    "plt.xticks([i + 0.25 for i in range(1,18)], X)\n",
    "# Giving the tilte for the plot\n",
    "plt.title(\"MUV dataset diagram\")\n",
    "# Namimg the x and y axis\n",
    "plt.xlabel('MUV_tasks')\n",
    "plt.ylabel('Cases')\n",
    "# Saving the plot as a 'png'\n",
    "plt.savefig('4BarPlot.png')\n",
    "# Displaying the bar plot\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "6CMhlAInzWOX"
   },
   "source": [
    "# Required functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "hidden": true,
    "id": "IzllOg474i99"
   },
   "outputs": [],
   "source": [
    "from dgllife.model import MLPPredictor\n",
    "\n",
    "def create_dataset_with_gcn(ds, class_embed_vector, GCN, tasks):\n",
    "\n",
    "    created_data = []\n",
    "    data = np.arange(len(tasks))\n",
    "    onehot_encoded = to_categorical(data)\n",
    "    for numberTask, dataset in enumerate(ds):\n",
    "        for i, data in enumerate(dataset):\n",
    "            smiles, g, label, mask = data\n",
    "            g = g.to(device)\n",
    "            g = dgl.add_self_loop(g)\n",
    "            graph_feats = g.ndata.pop('h')\n",
    "            embbed = GCN(g, graph_feats)\n",
    "            embbed = embbed.to('cpu')\n",
    "            embbed = embbed.detach().numpy()\n",
    "            a = ( embbed, onehot_encoded[numberTask], class_embed_vector[numberTask], label, tasks[numberTask])\n",
    "            created_data.append(a)\n",
    "    print('Data created!!')\n",
    "    return created_data "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rINYL0dJAFdU"
   },
   "source": [
    "# **Drug-based strategy with BioAct-Het**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "zIKQi__XAcia"
   },
   "source": [
    "## Classification with BioAct-Het and AttentiveFp GCN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "hidden": true,
    "id": "PLqGlvfHzmiA",
    "outputId": "8933b18c-eac0-4f73-a6f8-a12bb2ac35eb"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading GCN_attentivefp_MUV_pre_trained.pth from https://data.dgl.ai/dgllife/pre_trained/gcn_attentivefp_muv.pth...\n",
      "Pretrained model loaded\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Ali\\anaconda3\\envs\\thesis\\lib\\site-packages\\torch\\cuda\\__init__.py:132: UserWarning: \n",
      "    Found GPU0 NVIDIA GeForce GT 710 which is of cuda capability 3.5.\n",
      "    PyTorch no longer supports this GPU because it is too old.\n",
      "    The minimum cuda capability supported by this library is 3.7.\n",
      "    \n",
      "  warnings.warn(old_gpu_warn % (d, name, major, minor, min_arch // 10, min_arch % 10))\n"
     ]
    }
   ],
   "source": [
    "model_name = 'GCN_attentivefp_MUV'\n",
    "gcn_model = get_muv_model(model_name)\n",
    "gcn_model.eval()\n",
    "gcn_model = gcn_model.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11811\n",
      "Processing molecule 2000/11811\n",
      "Processing molecule 3000/11811\n",
      "Processing molecule 4000/11811\n",
      "Processing molecule 5000/11811\n",
      "Processing molecule 6000/11811\n",
      "Processing molecule 7000/11811\n",
      "Processing molecule 8000/11811\n",
      "Processing molecule 9000/11811\n",
      "Processing molecule 10000/11811\n",
      "Processing molecule 11000/11811\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11733\n",
      "Processing molecule 2000/11733\n",
      "Processing molecule 3000/11733\n",
      "Processing molecule 4000/11733\n",
      "Processing molecule 5000/11733\n",
      "Processing molecule 6000/11733\n",
      "Processing molecule 7000/11733\n",
      "Processing molecule 8000/11733\n",
      "Processing molecule 9000/11733\n",
      "Processing molecule 10000/11733\n",
      "Processing molecule 11000/11733\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11694\n",
      "Processing molecule 2000/11694\n",
      "Processing molecule 3000/11694\n",
      "Processing molecule 4000/11694\n",
      "Processing molecule 5000/11694\n",
      "Processing molecule 6000/11694\n",
      "Processing molecule 7000/11694\n",
      "Processing molecule 8000/11694\n",
      "Processing molecule 9000/11694\n",
      "Processing molecule 10000/11694\n",
      "Processing molecule 11000/11694\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11638\n",
      "Processing molecule 2000/11638\n",
      "Processing molecule 3000/11638\n",
      "Processing molecule 4000/11638\n",
      "Processing molecule 5000/11638\n",
      "Processing molecule 6000/11638\n",
      "Processing molecule 7000/11638\n",
      "Processing molecule 8000/11638\n",
      "Processing molecule 9000/11638\n",
      "Processing molecule 10000/11638\n",
      "Processing molecule 11000/11638\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11835\n",
      "Processing molecule 2000/11835\n",
      "Processing molecule 3000/11835\n",
      "Processing molecule 4000/11835\n",
      "Processing molecule 5000/11835\n",
      "Processing molecule 6000/11835\n",
      "Processing molecule 7000/11835\n",
      "Processing molecule 8000/11835\n",
      "Processing molecule 9000/11835\n",
      "Processing molecule 10000/11835\n",
      "Processing molecule 11000/11835\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11733\n",
      "Processing molecule 2000/11733\n",
      "Processing molecule 3000/11733\n",
      "Processing molecule 4000/11733\n",
      "Processing molecule 5000/11733\n",
      "Processing molecule 6000/11733\n",
      "Processing molecule 7000/11733\n",
      "Processing molecule 8000/11733\n",
      "Processing molecule 9000/11733\n",
      "Processing molecule 10000/11733\n",
      "Processing molecule 11000/11733\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11746\n",
      "Processing molecule 2000/11746\n",
      "Processing molecule 3000/11746\n",
      "Processing molecule 4000/11746\n",
      "Processing molecule 5000/11746\n",
      "Processing molecule 6000/11746\n",
      "Processing molecule 7000/11746\n",
      "Processing molecule 8000/11746\n",
      "Processing molecule 9000/11746\n",
      "Processing molecule 10000/11746\n",
      "Processing molecule 11000/11746\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11508\n",
      "Processing molecule 2000/11508\n",
      "Processing molecule 3000/11508\n",
      "Processing molecule 4000/11508\n",
      "Processing molecule 5000/11508\n",
      "Processing molecule 6000/11508\n",
      "Processing molecule 7000/11508\n",
      "Processing molecule 8000/11508\n",
      "Processing molecule 9000/11508\n",
      "Processing molecule 10000/11508\n",
      "Processing molecule 11000/11508\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11875\n",
      "Processing molecule 2000/11875\n",
      "Processing molecule 3000/11875\n",
      "Processing molecule 4000/11875\n",
      "Processing molecule 5000/11875\n",
      "Processing molecule 6000/11875\n",
      "Processing molecule 7000/11875\n",
      "Processing molecule 8000/11875\n",
      "Processing molecule 9000/11875\n",
      "Processing molecule 10000/11875\n",
      "Processing molecule 11000/11875\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11654\n",
      "Processing molecule 2000/11654\n",
      "Processing molecule 3000/11654\n",
      "Processing molecule 4000/11654\n",
      "Processing molecule 5000/11654\n",
      "Processing molecule 6000/11654\n",
      "Processing molecule 7000/11654\n",
      "Processing molecule 8000/11654\n",
      "Processing molecule 9000/11654\n",
      "Processing molecule 10000/11654\n",
      "Processing molecule 11000/11654\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11730\n",
      "Processing molecule 2000/11730\n",
      "Processing molecule 3000/11730\n",
      "Processing molecule 4000/11730\n",
      "Processing molecule 5000/11730\n",
      "Processing molecule 6000/11730\n",
      "Processing molecule 7000/11730\n",
      "Processing molecule 8000/11730\n",
      "Processing molecule 9000/11730\n",
      "Processing molecule 10000/11730\n",
      "Processing molecule 11000/11730\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11672\n",
      "Processing molecule 2000/11672\n",
      "Processing molecule 3000/11672\n",
      "Processing molecule 4000/11672\n",
      "Processing molecule 5000/11672\n",
      "Processing molecule 6000/11672\n",
      "Processing molecule 7000/11672\n",
      "Processing molecule 8000/11672\n",
      "Processing molecule 9000/11672\n",
      "Processing molecule 10000/11672\n",
      "Processing molecule 11000/11672\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11649\n",
      "Processing molecule 2000/11649\n",
      "Processing molecule 3000/11649\n",
      "Processing molecule 4000/11649\n",
      "Processing molecule 5000/11649\n",
      "Processing molecule 6000/11649\n",
      "Processing molecule 7000/11649\n",
      "Processing molecule 8000/11649\n",
      "Processing molecule 9000/11649\n",
      "Processing molecule 10000/11649\n",
      "Processing molecule 11000/11649\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11768\n",
      "Processing molecule 2000/11768\n",
      "Processing molecule 3000/11768\n",
      "Processing molecule 4000/11768\n",
      "Processing molecule 5000/11768\n",
      "Processing molecule 6000/11768\n",
      "Processing molecule 7000/11768\n",
      "Processing molecule 8000/11768\n",
      "Processing molecule 9000/11768\n",
      "Processing molecule 10000/11768\n",
      "Processing molecule 11000/11768\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11671\n",
      "Processing molecule 2000/11671\n",
      "Processing molecule 3000/11671\n",
      "Processing molecule 4000/11671\n",
      "Processing molecule 5000/11671\n",
      "Processing molecule 6000/11671\n",
      "Processing molecule 7000/11671\n",
      "Processing molecule 8000/11671\n",
      "Processing molecule 9000/11671\n",
      "Processing molecule 10000/11671\n",
      "Processing molecule 11000/11671\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11872\n",
      "Processing molecule 2000/11872\n",
      "Processing molecule 3000/11872\n",
      "Processing molecule 4000/11872\n",
      "Processing molecule 5000/11872\n",
      "Processing molecule 6000/11872\n",
      "Processing molecule 7000/11872\n",
      "Processing molecule 8000/11872\n",
      "Processing molecule 9000/11872\n",
      "Processing molecule 10000/11872\n",
      "Processing molecule 11000/11872\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11818\n",
      "Processing molecule 2000/11818\n",
      "Processing molecule 3000/11818\n",
      "Processing molecule 4000/11818\n",
      "Processing molecule 5000/11818\n",
      "Processing molecule 6000/11818\n",
      "Processing molecule 7000/11818\n",
      "Processing molecule 8000/11818\n",
      "Processing molecule 9000/11818\n",
      "Processing molecule 10000/11818\n",
      "Processing molecule 11000/11818\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3003\n",
      "Processing molecule 2000/3003\n",
      "Processing molecule 3000/3003\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2972\n",
      "Processing molecule 2000/2972\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3004\n",
      "Processing molecule 2000/3004\n",
      "Processing molecule 3000/3004\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2955\n",
      "Processing molecule 2000/2955\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3038\n",
      "Processing molecule 2000/3038\n",
      "Processing molecule 3000/3038\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2839\n",
      "Processing molecule 2000/2839\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2868\n",
      "Processing molecule 2000/2868\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2875\n",
      "Processing molecule 2000/2875\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2932\n",
      "Processing molecule 2000/2932\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3000\n",
      "Processing molecule 2000/3000\n",
      "Processing molecule 3000/3000\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2932\n",
      "Processing molecule 2000/2932\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2943\n",
      "Processing molecule 2000/2943\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2988\n",
      "Processing molecule 2000/2988\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2913\n",
      "Processing molecule 2000/2913\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2951\n",
      "Processing molecule 2000/2951\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2873\n",
      "Processing molecule 2000/2873\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2904\n",
      "Processing molecule 2000/2904\n",
      "17 17 17 17\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11833\n",
      "Processing molecule 2000/11833\n",
      "Processing molecule 3000/11833\n",
      "Processing molecule 4000/11833\n",
      "Processing molecule 5000/11833\n",
      "Processing molecule 6000/11833\n",
      "Processing molecule 7000/11833\n",
      "Processing molecule 8000/11833\n",
      "Processing molecule 9000/11833\n",
      "Processing molecule 10000/11833\n",
      "Processing molecule 11000/11833\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11753\n",
      "Processing molecule 2000/11753\n",
      "Processing molecule 3000/11753\n",
      "Processing molecule 4000/11753\n",
      "Processing molecule 5000/11753\n",
      "Processing molecule 6000/11753\n",
      "Processing molecule 7000/11753\n",
      "Processing molecule 8000/11753\n",
      "Processing molecule 9000/11753\n",
      "Processing molecule 10000/11753\n",
      "Processing molecule 11000/11753\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11718\n",
      "Processing molecule 2000/11718\n",
      "Processing molecule 3000/11718\n",
      "Processing molecule 4000/11718\n",
      "Processing molecule 5000/11718\n",
      "Processing molecule 6000/11718\n",
      "Processing molecule 7000/11718\n",
      "Processing molecule 8000/11718\n",
      "Processing molecule 9000/11718\n",
      "Processing molecule 10000/11718\n",
      "Processing molecule 11000/11718\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11659\n",
      "Processing molecule 2000/11659\n",
      "Processing molecule 3000/11659\n",
      "Processing molecule 4000/11659\n",
      "Processing molecule 5000/11659\n",
      "Processing molecule 6000/11659\n",
      "Processing molecule 7000/11659\n",
      "Processing molecule 8000/11659\n",
      "Processing molecule 9000/11659\n",
      "Processing molecule 10000/11659\n",
      "Processing molecule 11000/11659\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11860\n",
      "Processing molecule 2000/11860\n",
      "Processing molecule 3000/11860\n",
      "Processing molecule 4000/11860\n",
      "Processing molecule 5000/11860\n",
      "Processing molecule 6000/11860\n",
      "Processing molecule 7000/11860\n",
      "Processing molecule 8000/11860\n",
      "Processing molecule 9000/11860\n",
      "Processing molecule 10000/11860\n",
      "Processing molecule 11000/11860\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11755\n",
      "Processing molecule 2000/11755\n",
      "Processing molecule 3000/11755\n",
      "Processing molecule 4000/11755\n",
      "Processing molecule 5000/11755\n",
      "Processing molecule 6000/11755\n",
      "Processing molecule 7000/11755\n",
      "Processing molecule 8000/11755\n",
      "Processing molecule 9000/11755\n",
      "Processing molecule 10000/11755\n",
      "Processing molecule 11000/11755\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11767\n",
      "Processing molecule 2000/11767\n",
      "Processing molecule 3000/11767\n",
      "Processing molecule 4000/11767\n",
      "Processing molecule 5000/11767\n",
      "Processing molecule 6000/11767\n",
      "Processing molecule 7000/11767\n",
      "Processing molecule 8000/11767\n",
      "Processing molecule 9000/11767\n",
      "Processing molecule 10000/11767\n",
      "Processing molecule 11000/11767\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11531\n",
      "Processing molecule 2000/11531\n",
      "Processing molecule 3000/11531\n",
      "Processing molecule 4000/11531\n",
      "Processing molecule 5000/11531\n",
      "Processing molecule 6000/11531\n",
      "Processing molecule 7000/11531\n",
      "Processing molecule 8000/11531\n",
      "Processing molecule 9000/11531\n",
      "Processing molecule 10000/11531\n",
      "Processing molecule 11000/11531\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11899\n",
      "Processing molecule 2000/11899\n",
      "Processing molecule 3000/11899\n",
      "Processing molecule 4000/11899\n",
      "Processing molecule 5000/11899\n",
      "Processing molecule 6000/11899\n",
      "Processing molecule 7000/11899\n",
      "Processing molecule 8000/11899\n",
      "Processing molecule 9000/11899\n",
      "Processing molecule 10000/11899\n",
      "Processing molecule 11000/11899\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11678\n",
      "Processing molecule 2000/11678\n",
      "Processing molecule 3000/11678\n",
      "Processing molecule 4000/11678\n",
      "Processing molecule 5000/11678\n",
      "Processing molecule 6000/11678\n",
      "Processing molecule 7000/11678\n",
      "Processing molecule 8000/11678\n",
      "Processing molecule 9000/11678\n",
      "Processing molecule 10000/11678\n",
      "Processing molecule 11000/11678\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11754\n",
      "Processing molecule 2000/11754\n",
      "Processing molecule 3000/11754\n",
      "Processing molecule 4000/11754\n",
      "Processing molecule 5000/11754\n",
      "Processing molecule 6000/11754\n",
      "Processing molecule 7000/11754\n",
      "Processing molecule 8000/11754\n",
      "Processing molecule 9000/11754\n",
      "Processing molecule 10000/11754\n",
      "Processing molecule 11000/11754\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11694\n",
      "Processing molecule 2000/11694\n",
      "Processing molecule 3000/11694\n",
      "Processing molecule 4000/11694\n",
      "Processing molecule 5000/11694\n",
      "Processing molecule 6000/11694\n",
      "Processing molecule 7000/11694\n",
      "Processing molecule 8000/11694\n",
      "Processing molecule 9000/11694\n",
      "Processing molecule 10000/11694\n",
      "Processing molecule 11000/11694\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11677\n",
      "Processing molecule 2000/11677\n",
      "Processing molecule 3000/11677\n",
      "Processing molecule 4000/11677\n",
      "Processing molecule 5000/11677\n",
      "Processing molecule 6000/11677\n",
      "Processing molecule 7000/11677\n",
      "Processing molecule 8000/11677\n",
      "Processing molecule 9000/11677\n",
      "Processing molecule 10000/11677\n",
      "Processing molecule 11000/11677\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11796\n",
      "Processing molecule 2000/11796\n",
      "Processing molecule 3000/11796\n",
      "Processing molecule 4000/11796\n",
      "Processing molecule 5000/11796\n",
      "Processing molecule 6000/11796\n",
      "Processing molecule 7000/11796\n",
      "Processing molecule 8000/11796\n",
      "Processing molecule 9000/11796\n",
      "Processing molecule 10000/11796\n",
      "Processing molecule 11000/11796\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11695\n",
      "Processing molecule 2000/11695\n",
      "Processing molecule 3000/11695\n",
      "Processing molecule 4000/11695\n",
      "Processing molecule 5000/11695\n",
      "Processing molecule 6000/11695\n",
      "Processing molecule 7000/11695\n",
      "Processing molecule 8000/11695\n",
      "Processing molecule 9000/11695\n",
      "Processing molecule 10000/11695\n",
      "Processing molecule 11000/11695\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11897\n",
      "Processing molecule 2000/11897\n",
      "Processing molecule 3000/11897\n",
      "Processing molecule 4000/11897\n",
      "Processing molecule 5000/11897\n",
      "Processing molecule 6000/11897\n",
      "Processing molecule 7000/11897\n",
      "Processing molecule 8000/11897\n",
      "Processing molecule 9000/11897\n",
      "Processing molecule 10000/11897\n",
      "Processing molecule 11000/11897\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/11839\n",
      "Processing molecule 2000/11839\n",
      "Processing molecule 3000/11839\n",
      "Processing molecule 4000/11839\n",
      "Processing molecule 5000/11839\n",
      "Processing molecule 6000/11839\n",
      "Processing molecule 7000/11839\n",
      "Processing molecule 8000/11839\n",
      "Processing molecule 9000/11839\n",
      "Processing molecule 10000/11839\n",
      "Processing molecule 11000/11839\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3008\n",
      "Processing molecule 2000/3008\n",
      "Processing molecule 3000/3008\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2981\n",
      "Processing molecule 2000/2981\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3010\n",
      "Processing molecule 2000/3010\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 3000/3010\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2964\n",
      "Processing molecule 2000/2964\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3042\n",
      "Processing molecule 2000/3042\n",
      "Processing molecule 3000/3042\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2846\n",
      "Processing molecule 2000/2846\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2877\n",
      "Processing molecule 2000/2877\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2880\n",
      "Processing molecule 2000/2880\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2937\n",
      "Processing molecule 2000/2937\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/3004\n",
      "Processing molecule 2000/3004\n",
      "Processing molecule 3000/3004\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2937\n",
      "Processing molecule 2000/2937\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2950\n",
      "Processing molecule 2000/2950\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2990\n",
      "Processing molecule 2000/2990\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2915\n",
      "Processing molecule 2000/2915\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2956\n",
      "Processing molecule 2000/2956\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2877\n",
      "Processing molecule 2000/2877\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/2907\n",
      "Processing molecule 2000/2907\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 398 - train negative label: 199407\n",
      "up and down sampling => train positive label: 99500 - train negative label: 199407\n",
      "Test positive label: 91 - Test negative label: 49990\n"
     ]
    }
   ],
   "source": [
    "train, test = train_test_split(df,test_size=0.20, shuffle=True)\n",
    "\n",
    "#Calculation of embedded vectors for each class\n",
    "df_train_positive, df_train_negative = Separate_active_and_inactive_data(train, muv_tasks)\n",
    "df_test_positive, df_test_negative = Separate_active_and_inactive_data(test, muv_tasks)\n",
    "\n",
    "dataset_positive_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_positive]\n",
    "dataset_negative_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_negative]   \n",
    "dataset_positive_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_positive]\n",
    "dataset_negative_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_negative]\n",
    "\n",
    "print(len(dataset_positive_train) ,len(dataset_negative_train), len(dataset_positive_test), len(dataset_negative_test) )\n",
    "\n",
    "embed_class_muv_train = get_embedding_vector_class(dataset_positive_train, dataset_negative_train, radius=2, size = 512)\n",
    "embed_class_muv_test = get_embedding_vector_class(dataset_positive_test, dataset_negative_test, radius=2, size = 512)\n",
    "\n",
    "#create_dataset       \n",
    "train_notnan = del_nan (train, muv_tasks)\n",
    "test_notnan = del_nan (test, muv_tasks)\n",
    "\n",
    "train_dataset = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in train_notnan]\n",
    "test_dataset = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in test_notnan]\n",
    "\n",
    "train_ds = create_dataset_with_gcn(train_dataset, embed_class_muv_train, gcn_model, muv_tasks)\n",
    "valid_ds = create_dataset_with_gcn(test_dataset, embed_class_muv_test, gcn_model, muv_tasks)\n",
    "\n",
    "label_pos , label_neg, _ , _ = count_lablel(train_ds)\n",
    "print(f'train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "\n",
    "train_ds = up_and_down_Samplenig(train_ds, scale_downsampling = 0.5)\n",
    "\n",
    "label_pos , label_neg , _ , _ = count_lablel(train_ds)\n",
    "print(f'up and down sampling => train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "\n",
    "label_pos , label_neg, _ , _ = count_lablel(valid_ds)\n",
    "print(f'Test positive label: {label_pos} - Test negative label: {label_neg}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.6412 - accuracy: 0.6651 - mae: 0.4469 - mse: 0.2240 - auc_4: 0.5052\n",
      "Epoch 2/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.6300 - accuracy: 0.6671 - mae: 0.4386 - mse: 0.2194 - auc_4: 0.5604\n",
      "Epoch 3/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.6008 - accuracy: 0.6769 - mae: 0.4138 - mse: 0.2068 - auc_4: 0.6602\n",
      "Epoch 4/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.5955 - accuracy: 0.6824 - mae: 0.4096 - mse: 0.2046 - auc_4: 0.6701\n",
      "Epoch 5/15\n",
      "2336/2336 [==============================] - 79s 34ms/step - loss: 0.5924 - accuracy: 0.6853 - mae: 0.4069 - mse: 0.2033 - auc_4: 0.6752\n",
      "Epoch 6/15\n",
      "2336/2336 [==============================] - 80s 34ms/step - loss: 0.5911 - accuracy: 0.6868 - mae: 0.4060 - mse: 0.2029 - auc_4: 0.6767\n",
      "Epoch 7/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5898 - accuracy: 0.6887 - mae: 0.4048 - mse: 0.2023 - auc_4: 0.6787\n",
      "Epoch 8/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5874 - accuracy: 0.6901 - mae: 0.4029 - mse: 0.2013 - auc_4: 0.6833\n",
      "Epoch 9/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5858 - accuracy: 0.6913 - mae: 0.4018 - mse: 0.2008 - auc_4: 0.6855\n",
      "Epoch 10/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5866 - accuracy: 0.6906 - mae: 0.4025 - mse: 0.2012 - auc_4: 0.6837\n",
      "Epoch 11/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5872 - accuracy: 0.6911 - mae: 0.4027 - mse: 0.2013 - auc_4: 0.6837\n",
      "Epoch 12/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5862 - accuracy: 0.6903 - mae: 0.4022 - mse: 0.2010 - auc_4: 0.6852\n",
      "Epoch 13/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5857 - accuracy: 0.6904 - mae: 0.4020 - mse: 0.2010 - auc_4: 0.6855\n",
      "Epoch 14/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5832 - accuracy: 0.6930 - mae: 0.4001 - mse: 0.2000 - auc_4: 0.6888\n",
      "Epoch 15/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.5821 - accuracy: 0.6931 - mae: 0.3994 - mse: 0.1996 - auc_4: 0.6903\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "68\n",
      "68\n",
      "68\n",
      "68\n",
      "67\n",
      "66\n",
      "66\n",
      "Epoch 1/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.5808 - accuracy: 0.6938 - mae: 0.3985 - mse: 0.1992 - auc_4: 0.6920\n",
      "Epoch 2/15\n",
      "2336/2336 [==============================] - 78s 33ms/step - loss: 0.5786 - accuracy: 0.6939 - mae: 0.3971 - mse: 0.1984 - auc_4: 0.6956\n",
      "Epoch 3/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5770 - accuracy: 0.6949 - mae: 0.3960 - mse: 0.1979 - auc_4: 0.6979\n",
      "Epoch 4/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5795 - accuracy: 0.6938 - mae: 0.3974 - mse: 0.1986 - auc_4: 0.6950\n",
      "Epoch 5/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5775 - accuracy: 0.6955 - mae: 0.3962 - mse: 0.1980 - auc_4: 0.6977\n",
      "Epoch 6/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5766 - accuracy: 0.6955 - mae: 0.3956 - mse: 0.1976 - auc_4: 0.6993\n",
      "Epoch 7/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5745 - accuracy: 0.6958 - mae: 0.3938 - mse: 0.1968 - auc_4: 0.7032\n",
      "Epoch 8/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5733 - accuracy: 0.6961 - mae: 0.3932 - mse: 0.1965 - auc_4: 0.7045\n",
      "Epoch 9/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5726 - accuracy: 0.6959 - mae: 0.3926 - mse: 0.1962 - auc_4: 0.7059\n",
      "Epoch 10/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5716 - accuracy: 0.6971 - mae: 0.3918 - mse: 0.1957 - auc_4: 0.7078\n",
      "Epoch 11/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5707 - accuracy: 0.6974 - mae: 0.3908 - mse: 0.1953 - auc_4: 0.7098\n",
      "Epoch 12/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5709 - accuracy: 0.6959 - mae: 0.3912 - mse: 0.1955 - auc_4: 0.7091\n",
      "Epoch 13/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5690 - accuracy: 0.6962 - mae: 0.3900 - mse: 0.1948 - auc_4: 0.7121\n",
      "Epoch 14/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5680 - accuracy: 0.6980 - mae: 0.3896 - mse: 0.1946 - auc_4: 0.7123\n",
      "Epoch 15/15\n",
      "2336/2336 [==============================] - 77s 33ms/step - loss: 0.5689 - accuracy: 0.6976 - mae: 0.3896 - mse: 0.1947 - auc_4: 0.7122\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "69\n",
      "2\n"
     ]
    }
   ],
   "source": [
    "# models = [siamese_net for task in sider_tasks_final]\n",
    "Epoch_S = 15\n",
    "l = []\n",
    "r = []\n",
    "lbls = []\n",
    "for i , data in enumerate(train_ds):\n",
    "    embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "    l.append(embbed_drug[0])\n",
    "    r.append(embbed_task)\n",
    "    lbls.append(lbl.tolist())\n",
    "\n",
    "l = np.array(l).reshape(-1,128,1)\n",
    "r = np.array(r).reshape(-1,512,1)\n",
    "lbls=np.array(lbls)\n",
    "\n",
    "history = History()\n",
    "\n",
    "siamese_net = siamese_model_attentiveFp_muv()\n",
    "\n",
    "s = siamese_net.fit([l, r], lbls, epochs = Epoch_S, shuffle=True, batch_size=128, callbacks=[history])\n",
    "\n",
    "for j in range(1000):\n",
    "    C=1\n",
    "    Before = int(s.history['accuracy'][-1]*100)\n",
    "    for i in range(2,Epoch_S+1):\n",
    "        if  int(s.history['accuracy'][-i]*100)== Before:\n",
    "            C=C+1\n",
    "        else:\n",
    "            C=1\n",
    "        Before=int(s.history['accuracy'][-i]*100)\n",
    "        print(Before)\n",
    "    if C==Epoch_S:\n",
    "        break\n",
    "    s = siamese_net.fit([l, r], lbls, epochs = Epoch_S, shuffle=True, batch_size=128, callbacks=history)\n",
    "print(j+1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1568/1568 [==============================] - 8s 5ms/step - loss: 0.3309 - accuracy: 0.9311 - mae: 0.2704 - mse: 0.0872 - auc_3: 0.7056\n"
     ]
    }
   ],
   "source": [
    "result =[]   \n",
    "\n",
    "l_valid = []\n",
    "r_valid = []\n",
    "lbls_valid = []\n",
    "\n",
    "for i , data in enumerate(valid_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_valid.append(embbed_drug[0])\n",
    "            r_valid.append(embbed_task)\n",
    "            lbls_valid.append(lbl.tolist())\n",
    "\n",
    "l_valid = np.array(l_valid).reshape(-1,128,1)\n",
    "r_valid = np.array(r_valid).reshape(-1,512,1)\n",
    "lbls_valid = np.array(lbls_valid)\n",
    "\n",
    "\n",
    "score  = siamese_net.evaluate([l_valid,r_valid],lbls_valid, verbose=1)\n",
    "a = (score[1],score[4])\n",
    "result.append(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### Dropout = 0.3 and downsampling = 0.5 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.9605262875556946, 0.6688770055770874)]"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.9249719381332397, 0.6104376316070557)]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.8861362934112549, 0.6251401901245117)]"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.9311238527297974, 0.7055920362472534)]"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.9311238527297974, 0.7055920362472534)]"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "_dyrk9nGcM81"
   },
   "source": [
    "## Classification with BioAct-Het and Canonical GCN "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "X5pnznxNzmiF",
    "outputId": "9a7ab5d3-9594-44f5-bddb-d47a6c996228"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading GCN_attentivefp_MUV_pre_trained.pth from https://data.dgl.ai/dgllife/pre_trained/gcn_attentivefp_muv.pth...\n",
      "Pretrained model loaded\n"
     ]
    }
   ],
   "source": [
    "model_GCN = 'GCN_attentivefp_MUV'\n",
    "gcn_model = get_muv_model(model_GCN)\n",
    "gcn_model.eval()\n",
    "gcn_model = gcn_model.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "background_save": true,
     "base_uri": "https://localhost:8080/"
    },
    "id": "GoviV5WbzmiI",
    "outputId": "7d6726e0-4792-4d06-953e-648851f6117a",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6241\n",
      "Processing molecule 2000/6241\n",
      "Processing molecule 3000/6241\n",
      "Processing molecule 4000/6241\n",
      "Processing molecule 5000/6241\n",
      "Processing molecule 6000/6241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5859\n",
      "Processing molecule 2000/5859\n",
      "Processing molecule 3000/5859\n",
      "Processing molecule 4000/5859\n",
      "Processing molecule 5000/5859\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5202\n",
      "Processing molecule 2000/5202\n",
      "Processing molecule 3000/5202\n",
      "Processing molecule 4000/5202\n",
      "Processing molecule 5000/5202\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4971\n",
      "Processing molecule 2000/4971\n",
      "Processing molecule 3000/4971\n",
      "Processing molecule 4000/4971\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4859\n",
      "Processing molecule 2000/4859\n",
      "Processing molecule 3000/4859\n",
      "Processing molecule 4000/4859\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5941\n",
      "Processing molecule 2000/5941\n",
      "Processing molecule 3000/5941\n",
      "Processing molecule 4000/5941\n",
      "Processing molecule 5000/5941\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5645\n",
      "Processing molecule 2000/5645\n",
      "Processing molecule 3000/5645\n",
      "Processing molecule 4000/5645\n",
      "Processing molecule 5000/5645\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4403\n",
      "Processing molecule 2000/4403\n",
      "Processing molecule 3000/4403\n",
      "Processing molecule 4000/4403\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6122\n",
      "Processing molecule 2000/6122\n",
      "Processing molecule 3000/6122\n",
      "Processing molecule 4000/6122\n",
      "Processing molecule 5000/6122\n",
      "Processing molecule 6000/6122\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5497\n",
      "Processing molecule 2000/5497\n",
      "Processing molecule 3000/5497\n",
      "Processing molecule 4000/5497\n",
      "Processing molecule 5000/5497\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4397\n",
      "Processing molecule 2000/4397\n",
      "Processing molecule 3000/4397\n",
      "Processing molecule 4000/4397\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5728\n",
      "Processing molecule 2000/5728\n",
      "Processing molecule 3000/5728\n",
      "Processing molecule 4000/5728\n",
      "Processing molecule 5000/5728\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6523\n",
      "Processing molecule 2000/6523\n",
      "Processing molecule 3000/6523\n",
      "Processing molecule 4000/6523\n",
      "Processing molecule 5000/6523\n",
      "Processing molecule 6000/6523\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6075\n",
      "Processing molecule 2000/6075\n",
      "Processing molecule 3000/6075\n",
      "Processing molecule 4000/6075\n",
      "Processing molecule 5000/6075\n",
      "Processing molecule 6000/6075\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5876\n",
      "Processing molecule 2000/5876\n",
      "Processing molecule 3000/5876\n",
      "Processing molecule 4000/5876\n",
      "Processing molecule 5000/5876\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5247\n",
      "Processing molecule 2000/5247\n",
      "Processing molecule 3000/5247\n",
      "Processing molecule 4000/5247\n",
      "Processing molecule 5000/5247\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5566\n",
      "Processing molecule 2000/5566\n",
      "Processing molecule 3000/5566\n",
      "Processing molecule 4000/5566\n",
      "Processing molecule 5000/5566\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6255\n",
      "Processing molecule 2000/6255\n",
      "Processing molecule 3000/6255\n",
      "Processing molecule 4000/6255\n",
      "Processing molecule 5000/6255\n",
      "Processing molecule 6000/6255\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5804\n",
      "Processing molecule 2000/5804\n",
      "Processing molecule 3000/5804\n",
      "Processing molecule 4000/5804\n",
      "Processing molecule 5000/5804\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5248\n",
      "Processing molecule 2000/5248\n",
      "Processing molecule 3000/5248\n",
      "Processing molecule 4000/5248\n",
      "Processing molecule 5000/5248\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6352\n",
      "Processing molecule 2000/6352\n",
      "Processing molecule 3000/6352\n",
      "Processing molecule 4000/6352\n",
      "Processing molecule 5000/6352\n",
      "Processing molecule 6000/6352\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5827\n",
      "Processing molecule 2000/5827\n",
      "Processing molecule 3000/5827\n",
      "Processing molecule 4000/5827\n",
      "Processing molecule 5000/5827\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5232\n",
      "Processing molecule 2000/5232\n",
      "Processing molecule 3000/5232\n",
      "Processing molecule 4000/5232\n",
      "Processing molecule 5000/5232\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6095\n",
      "Processing molecule 2000/6095\n",
      "Processing molecule 3000/6095\n",
      "Processing molecule 4000/6095\n",
      "Processing molecule 5000/6095\n",
      "Processing molecule 6000/6095\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5235 - train negative label: 64865\n",
      "up and down sampling => train positive label: 31410 - train negative label: 32432\n",
      "Test positive label: 627 - Test negative label: 7219\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5697 - accuracy: 0.7129 - mae: 0.3851 - mse: 0.1916 - auc_17: 0.7825\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5177 - accuracy: 0.7570 - mae: 0.3431 - mse: 0.1698 - auc_17: 0.8273\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5006 - accuracy: 0.7667 - mae: 0.3299 - mse: 0.1632 - auc_17: 0.8395\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4887 - accuracy: 0.7739 - mae: 0.3205 - mse: 0.1589 - auc_17: 0.8471\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4773 - accuracy: 0.7783 - mae: 0.3121 - mse: 0.1547 - auc_17: 0.8548\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4696 - accuracy: 0.7831 - mae: 0.3059 - mse: 0.1517 - auc_17: 0.8602\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4651 - accuracy: 0.7850 - mae: 0.3023 - mse: 0.1502 - auc_17: 0.8628\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4575 - accuracy: 0.7910 - mae: 0.2970 - mse: 0.1474 - auc_17: 0.8675\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4525 - accuracy: 0.7937 - mae: 0.2934 - mse: 0.1453 - auc_17: 0.8709\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4468 - accuracy: 0.7951 - mae: 0.2893 - mse: 0.1437 - auc_17: 0.8740\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4445 - accuracy: 0.7969 - mae: 0.2877 - mse: 0.1427 - auc_17: 0.8756\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4403 - accuracy: 0.7994 - mae: 0.2841 - mse: 0.1410 - auc_17: 0.8782\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4335 - accuracy: 0.8031 - mae: 0.2792 - mse: 0.1386 - auc_17: 0.8820\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4315 - accuracy: 0.8045 - mae: 0.2779 - mse: 0.1378 - auc_17: 0.8832\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4261 - accuracy: 0.8077 - mae: 0.2736 - mse: 0.1359 - auc_17: 0.8863\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4235 - accuracy: 0.8083 - mae: 0.2718 - mse: 0.1351 - auc_17: 0.8877\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4205 - accuracy: 0.8109 - mae: 0.2696 - mse: 0.1339 - auc_17: 0.8895\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4195 - accuracy: 0.8119 - mae: 0.2685 - mse: 0.1338 - auc_17: 0.8897\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4151 - accuracy: 0.8141 - mae: 0.2653 - mse: 0.1321 - auc_17: 0.8923\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4127 - accuracy: 0.8149 - mae: 0.2640 - mse: 0.1311 - auc_17: 0.8936\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4082 - accuracy: 0.8173 - mae: 0.2602 - mse: 0.1297 - auc_17: 0.8959\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4073 - accuracy: 0.8162 - mae: 0.2605 - mse: 0.1294 - auc_17: 0.8965\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4067 - accuracy: 0.8173 - mae: 0.2594 - mse: 0.1291 - auc_17: 0.8967\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4073 - accuracy: 0.8175 - mae: 0.2598 - mse: 0.1292 - auc_17: 0.8963\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4029 - accuracy: 0.8210 - mae: 0.2566 - mse: 0.1277 - auc_17: 0.8987\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4029 - accuracy: 0.8214 - mae: 0.2564 - mse: 0.1277 - auc_17: 0.8985\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4054 - accuracy: 0.8203 - mae: 0.2579 - mse: 0.1285 - auc_17: 0.8970\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4056 - accuracy: 0.8188 - mae: 0.2588 - mse: 0.1287 - auc_17: 0.8970\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4038 - accuracy: 0.8201 - mae: 0.2571 - mse: 0.1282 - auc_17: 0.8979\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4052 - accuracy: 0.8200 - mae: 0.2580 - mse: 0.1285 - auc_17: 0.8972\n",
      "82\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4028 - accuracy: 0.8198 - mae: 0.2569 - mse: 0.1278 - auc_17: 0.8982\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4011 - accuracy: 0.8225 - mae: 0.2551 - mse: 0.1271 - auc_17: 0.8992\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3985 - accuracy: 0.8234 - mae: 0.2531 - mse: 0.1262 - auc_17: 0.9002\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3954 - accuracy: 0.8228 - mae: 0.2512 - mse: 0.1251 - auc_17: 0.9022\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3984 - accuracy: 0.8225 - mae: 0.2527 - mse: 0.1263 - auc_17: 0.9003\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3994 - accuracy: 0.8219 - mae: 0.2541 - mse: 0.1267 - auc_17: 0.8998\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4020 - accuracy: 0.8199 - mae: 0.2555 - mse: 0.1276 - auc_17: 0.8985\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4009 - accuracy: 0.8219 - mae: 0.2549 - mse: 0.1270 - auc_17: 0.8991\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4030 - accuracy: 0.8218 - mae: 0.2559 - mse: 0.1277 - auc_17: 0.8978\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4011 - accuracy: 0.8216 - mae: 0.2553 - mse: 0.1271 - auc_17: 0.8989\n",
      "82\n",
      "82\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3988 - accuracy: 0.8235 - mae: 0.2535 - mse: 0.1263 - auc_17: 0.9001\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4005 - accuracy: 0.8239 - mae: 0.2541 - mse: 0.1269 - auc_17: 0.8989\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3971 - accuracy: 0.8238 - mae: 0.2521 - mse: 0.1259 - auc_17: 0.9007\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4025 - accuracy: 0.8190 - mae: 0.2568 - mse: 0.1280 - auc_17: 0.8978\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4047 - accuracy: 0.8197 - mae: 0.2574 - mse: 0.1287 - auc_17: 0.8968\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4036 - accuracy: 0.8203 - mae: 0.2571 - mse: 0.1282 - auc_17: 0.8972\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4018 - accuracy: 0.8199 - mae: 0.2563 - mse: 0.1278 - auc_17: 0.8983\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4004 - accuracy: 0.8200 - mae: 0.2548 - mse: 0.1272 - auc_17: 0.8990\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4018 - accuracy: 0.8198 - mae: 0.2558 - mse: 0.1277 - auc_17: 0.8984\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3979 - accuracy: 0.8224 - mae: 0.2536 - mse: 0.1266 - auc_17: 0.9001\n",
      "81\n",
      "82\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3988 - accuracy: 0.8205 - mae: 0.2546 - mse: 0.1269 - auc_17: 0.8997\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4041 - accuracy: 0.8180 - mae: 0.2586 - mse: 0.1287 - auc_17: 0.8969\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4036 - accuracy: 0.8173 - mae: 0.2576 - mse: 0.1286 - auc_17: 0.8972\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4023 - accuracy: 0.8200 - mae: 0.2564 - mse: 0.1279 - auc_17: 0.8975\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4034 - accuracy: 0.8189 - mae: 0.2575 - mse: 0.1285 - auc_17: 0.8969\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4010 - accuracy: 0.8210 - mae: 0.2557 - mse: 0.1276 - auc_17: 0.8982\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3992 - accuracy: 0.8202 - mae: 0.2547 - mse: 0.1270 - auc_17: 0.8993\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4006 - accuracy: 0.8186 - mae: 0.2558 - mse: 0.1277 - auc_17: 0.8984\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3994 - accuracy: 0.8197 - mae: 0.2544 - mse: 0.1273 - auc_17: 0.8990\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3989 - accuracy: 0.8203 - mae: 0.2546 - mse: 0.1269 - auc_17: 0.8993\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3945 - accuracy: 0.8233 - mae: 0.2518 - mse: 0.1256 - auc_17: 0.9012\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3975 - accuracy: 0.8213 - mae: 0.2530 - mse: 0.1264 - auc_17: 0.8997\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3990 - accuracy: 0.8222 - mae: 0.2544 - mse: 0.1270 - auc_17: 0.8984\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4033 - accuracy: 0.8196 - mae: 0.2577 - mse: 0.1285 - auc_17: 0.8964\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4030 - accuracy: 0.8206 - mae: 0.2569 - mse: 0.1282 - auc_17: 0.8965\n",
      "Epoch 6/10\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4073 - accuracy: 0.8182 - mae: 0.2598 - mse: 0.1298 - auc_17: 0.8939\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4054 - accuracy: 0.8183 - mae: 0.2591 - mse: 0.1291 - auc_17: 0.8949\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4118 - accuracy: 0.8147 - mae: 0.2627 - mse: 0.1315 - auc_17: 0.8913\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4154 - accuracy: 0.8123 - mae: 0.2659 - mse: 0.1328 - auc_17: 0.8896\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4136 - accuracy: 0.8128 - mae: 0.2652 - mse: 0.1323 - auc_17: 0.8902\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4111 - accuracy: 0.8152 - mae: 0.2633 - mse: 0.1313 - auc_17: 0.8916\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4183 - accuracy: 0.8108 - mae: 0.2676 - mse: 0.1338 - auc_17: 0.8875\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4296 - accuracy: 0.8054 - mae: 0.2756 - mse: 0.1378 - auc_17: 0.8806\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4320 - accuracy: 0.8038 - mae: 0.2785 - mse: 0.1387 - auc_17: 0.8788\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4307 - accuracy: 0.8035 - mae: 0.2770 - mse: 0.1384 - auc_17: 0.8800\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4276 - accuracy: 0.8050 - mae: 0.2751 - mse: 0.1373 - auc_17: 0.8813\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4272 - accuracy: 0.8057 - mae: 0.2747 - mse: 0.1370 - auc_17: 0.8820\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4281 - accuracy: 0.8046 - mae: 0.2756 - mse: 0.1377 - auc_17: 0.8811\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4312 - accuracy: 0.8027 - mae: 0.2783 - mse: 0.1387 - auc_17: 0.8792\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4325 - accuracy: 0.8018 - mae: 0.2788 - mse: 0.1391 - auc_17: 0.8786\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4325 - accuracy: 0.8007 - mae: 0.2793 - mse: 0.1394 - auc_17: 0.8782\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4311 - accuracy: 0.8030 - mae: 0.2781 - mse: 0.1388 - auc_17: 0.8791\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4316 - accuracy: 0.8034 - mae: 0.2780 - mse: 0.1387 - auc_17: 0.8791\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4329 - accuracy: 0.8039 - mae: 0.2788 - mse: 0.1392 - auc_17: 0.8785\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4275 - accuracy: 0.8050 - mae: 0.2756 - mse: 0.1375 - auc_17: 0.8808\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4284 - accuracy: 0.8035 - mae: 0.2762 - mse: 0.1379 - auc_17: 0.8804\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4287 - accuracy: 0.8037 - mae: 0.2770 - mse: 0.1379 - auc_17: 0.8804\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4271 - accuracy: 0.8038 - mae: 0.2752 - mse: 0.1376 - auc_17: 0.8807\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4274 - accuracy: 0.8021 - mae: 0.2757 - mse: 0.1379 - auc_17: 0.8810\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4253 - accuracy: 0.8041 - mae: 0.2743 - mse: 0.1370 - auc_17: 0.8824\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "9\n",
      "246/246 [==============================] - 0s 842us/step - loss: 0.3543 - accuracy: 0.8369 - mae: 0.2337 - mse: 0.1108 - auc_17: 0.7962\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6267\n",
      "Processing molecule 2000/6267\n",
      "Processing molecule 3000/6267\n",
      "Processing molecule 4000/6267\n",
      "Processing molecule 5000/6267\n",
      "Processing molecule 6000/6267\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5878\n",
      "Processing molecule 2000/5878\n",
      "Processing molecule 3000/5878\n",
      "Processing molecule 4000/5878\n",
      "Processing molecule 5000/5878\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5221\n",
      "Processing molecule 2000/5221\n",
      "Processing molecule 3000/5221\n",
      "Processing molecule 4000/5221\n",
      "Processing molecule 5000/5221\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4983\n",
      "Processing molecule 2000/4983\n",
      "Processing molecule 3000/4983\n",
      "Processing molecule 4000/4983\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4871\n",
      "Processing molecule 2000/4871\n",
      "Processing molecule 3000/4871\n",
      "Processing molecule 4000/4871\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5951\n",
      "Processing molecule 2000/5951\n",
      "Processing molecule 3000/5951\n",
      "Processing molecule 4000/5951\n",
      "Processing molecule 5000/5951\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5635\n",
      "Processing molecule 2000/5635\n",
      "Processing molecule 3000/5635\n",
      "Processing molecule 4000/5635\n",
      "Processing molecule 5000/5635\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4402\n",
      "Processing molecule 2000/4402\n",
      "Processing molecule 3000/4402\n",
      "Processing molecule 4000/4402\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6132\n",
      "Processing molecule 2000/6132\n",
      "Processing molecule 3000/6132\n",
      "Processing molecule 4000/6132\n",
      "Processing molecule 5000/6132\n",
      "Processing molecule 6000/6132\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5464\n",
      "Processing molecule 2000/5464\n",
      "Processing molecule 3000/5464\n",
      "Processing molecule 4000/5464\n",
      "Processing molecule 5000/5464\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4409\n",
      "Processing molecule 2000/4409\n",
      "Processing molecule 3000/4409\n",
      "Processing molecule 4000/4409\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5726\n",
      "Processing molecule 2000/5726\n",
      "Processing molecule 3000/5726\n",
      "Processing molecule 4000/5726\n",
      "Processing molecule 5000/5726\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6542\n",
      "Processing molecule 2000/6542\n",
      "Processing molecule 3000/6542\n",
      "Processing molecule 4000/6542\n",
      "Processing molecule 5000/6542\n",
      "Processing molecule 6000/6542\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6094\n",
      "Processing molecule 2000/6094\n",
      "Processing molecule 3000/6094\n",
      "Processing molecule 4000/6094\n",
      "Processing molecule 5000/6094\n",
      "Processing molecule 6000/6094\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5908\n",
      "Processing molecule 2000/5908\n",
      "Processing molecule 3000/5908\n",
      "Processing molecule 4000/5908\n",
      "Processing molecule 5000/5908\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5254\n",
      "Processing molecule 2000/5254\n",
      "Processing molecule 3000/5254\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 4000/5254\n",
      "Processing molecule 5000/5254\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5571\n",
      "Processing molecule 2000/5571\n",
      "Processing molecule 3000/5571\n",
      "Processing molecule 4000/5571\n",
      "Processing molecule 5000/5571\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6271\n",
      "Processing molecule 2000/6271\n",
      "Processing molecule 3000/6271\n",
      "Processing molecule 4000/6271\n",
      "Processing molecule 5000/6271\n",
      "Processing molecule 6000/6271\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5804\n",
      "Processing molecule 2000/5804\n",
      "Processing molecule 3000/5804\n",
      "Processing molecule 4000/5804\n",
      "Processing molecule 5000/5804\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5258\n",
      "Processing molecule 2000/5258\n",
      "Processing molecule 3000/5258\n",
      "Processing molecule 4000/5258\n",
      "Processing molecule 5000/5258\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6368\n",
      "Processing molecule 2000/6368\n",
      "Processing molecule 3000/6368\n",
      "Processing molecule 4000/6368\n",
      "Processing molecule 5000/6368\n",
      "Processing molecule 6000/6368\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5801\n",
      "Processing molecule 2000/5801\n",
      "Processing molecule 3000/5801\n",
      "Processing molecule 4000/5801\n",
      "Processing molecule 5000/5801\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5241\n",
      "Processing molecule 2000/5241\n",
      "Processing molecule 3000/5241\n",
      "Processing molecule 4000/5241\n",
      "Processing molecule 5000/5241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6114\n",
      "Processing molecule 2000/6114\n",
      "Processing molecule 3000/6114\n",
      "Processing molecule 4000/6114\n",
      "Processing molecule 5000/6114\n",
      "Processing molecule 6000/6114\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5287 - train negative label: 64939\n",
      "up and down sampling => train positive label: 31722 - train negative label: 32469\n",
      "Test positive label: 575 - Test negative label: 7145\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5759 - accuracy: 0.7092 - mae: 0.3903 - mse: 0.1943 - auc_18: 0.7768\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5185 - accuracy: 0.7584 - mae: 0.3437 - mse: 0.1701 - auc_18: 0.8264\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5031 - accuracy: 0.7647 - mae: 0.3320 - mse: 0.1646 - auc_18: 0.8367\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4886 - accuracy: 0.7731 - mae: 0.3210 - mse: 0.1588 - auc_18: 0.8472\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4784 - accuracy: 0.7768 - mae: 0.3133 - mse: 0.1553 - auc_18: 0.8539\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4701 - accuracy: 0.7817 - mae: 0.3066 - mse: 0.1521 - auc_18: 0.8596\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4643 - accuracy: 0.7862 - mae: 0.3025 - mse: 0.1499 - auc_18: 0.8635\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4548 - accuracy: 0.7899 - mae: 0.2958 - mse: 0.1467 - auc_18: 0.8690\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4487 - accuracy: 0.7931 - mae: 0.2913 - mse: 0.1443 - auc_18: 0.8730\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4422 - accuracy: 0.7982 - mae: 0.2860 - mse: 0.1418 - auc_18: 0.8769\n",
      "79\n",
      "78\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "70\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4382 - accuracy: 0.8002 - mae: 0.2832 - mse: 0.1407 - auc_18: 0.8789\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4353 - accuracy: 0.8025 - mae: 0.2805 - mse: 0.1392 - auc_18: 0.8810\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4293 - accuracy: 0.8068 - mae: 0.2762 - mse: 0.1371 - auc_18: 0.8843\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4267 - accuracy: 0.8061 - mae: 0.2744 - mse: 0.1363 - auc_18: 0.8859\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4214 - accuracy: 0.8114 - mae: 0.2703 - mse: 0.1341 - auc_18: 0.8889\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4195 - accuracy: 0.8114 - mae: 0.2689 - mse: 0.1338 - auc_18: 0.8895\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4165 - accuracy: 0.8127 - mae: 0.2669 - mse: 0.1326 - auc_18: 0.8914\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 14ms/step - loss: 0.4172 - accuracy: 0.8128 - mae: 0.2662 - mse: 0.1326 - auc_18: 0.8911\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4195 - accuracy: 0.8104 - mae: 0.2687 - mse: 0.1338 - auc_18: 0.8895\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4154 - accuracy: 0.8138 - mae: 0.2652 - mse: 0.1320 - auc_18: 0.8919\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4160 - accuracy: 0.8128 - mae: 0.2660 - mse: 0.1325 - auc_18: 0.8913\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4136 - accuracy: 0.8143 - mae: 0.2644 - mse: 0.1314 - auc_18: 0.8928\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4134 - accuracy: 0.8142 - mae: 0.2642 - mse: 0.1315 - auc_18: 0.8927\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4167 - accuracy: 0.8139 - mae: 0.2659 - mse: 0.1325 - auc_18: 0.8908\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4154 - accuracy: 0.8139 - mae: 0.2652 - mse: 0.1321 - auc_18: 0.8913\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4128 - accuracy: 0.8142 - mae: 0.2640 - mse: 0.1316 - auc_18: 0.8926\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4118 - accuracy: 0.8163 - mae: 0.2626 - mse: 0.1309 - auc_18: 0.8932\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4106 - accuracy: 0.8153 - mae: 0.2624 - mse: 0.1306 - auc_18: 0.8939\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4108 - accuracy: 0.8162 - mae: 0.2623 - mse: 0.1308 - auc_18: 0.8937\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4115 - accuracy: 0.8153 - mae: 0.2622 - mse: 0.1311 - auc_18: 0.8932\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "242/242 [==============================] - 0s 2ms/step - loss: 0.2743 - accuracy: 0.8724 - mae: 0.1603 - mse: 0.0832 - auc_18: 0.7902\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6263\n",
      "Processing molecule 2000/6263\n",
      "Processing molecule 3000/6263\n",
      "Processing molecule 4000/6263\n",
      "Processing molecule 5000/6263\n",
      "Processing molecule 6000/6263\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5883\n",
      "Processing molecule 2000/5883\n",
      "Processing molecule 3000/5883\n",
      "Processing molecule 4000/5883\n",
      "Processing molecule 5000/5883\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5201\n",
      "Processing molecule 2000/5201\n",
      "Processing molecule 3000/5201\n",
      "Processing molecule 4000/5201\n",
      "Processing molecule 5000/5201\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4975\n",
      "Processing molecule 2000/4975\n",
      "Processing molecule 3000/4975\n",
      "Processing molecule 4000/4975\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4851\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 2000/4851\n",
      "Processing molecule 3000/4851\n",
      "Processing molecule 4000/4851\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5937\n",
      "Processing molecule 2000/5937\n",
      "Processing molecule 3000/5937\n",
      "Processing molecule 4000/5937\n",
      "Processing molecule 5000/5937\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5648\n",
      "Processing molecule 2000/5648\n",
      "Processing molecule 3000/5648\n",
      "Processing molecule 4000/5648\n",
      "Processing molecule 5000/5648\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4396\n",
      "Processing molecule 2000/4396\n",
      "Processing molecule 3000/4396\n",
      "Processing molecule 4000/4396\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6133\n",
      "Processing molecule 2000/6133\n",
      "Processing molecule 3000/6133\n",
      "Processing molecule 4000/6133\n",
      "Processing molecule 5000/6133\n",
      "Processing molecule 6000/6133\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5483\n",
      "Processing molecule 2000/5483\n",
      "Processing molecule 3000/5483\n",
      "Processing molecule 4000/5483\n",
      "Processing molecule 5000/5483\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4422\n",
      "Processing molecule 2000/4422\n",
      "Processing molecule 3000/4422\n",
      "Processing molecule 4000/4422\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5726\n",
      "Processing molecule 2000/5726\n",
      "Processing molecule 3000/5726\n",
      "Processing molecule 4000/5726\n",
      "Processing molecule 5000/5726\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6543\n",
      "Processing molecule 2000/6543\n",
      "Processing molecule 3000/6543\n",
      "Processing molecule 4000/6543\n",
      "Processing molecule 5000/6543\n",
      "Processing molecule 6000/6543\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6096\n",
      "Processing molecule 2000/6096\n",
      "Processing molecule 3000/6096\n",
      "Processing molecule 4000/6096\n",
      "Processing molecule 5000/6096\n",
      "Processing molecule 6000/6096\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5899\n",
      "Processing molecule 2000/5899\n",
      "Processing molecule 3000/5899\n",
      "Processing molecule 4000/5899\n",
      "Processing molecule 5000/5899\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5242\n",
      "Processing molecule 2000/5242\n",
      "Processing molecule 3000/5242\n",
      "Processing molecule 4000/5242\n",
      "Processing molecule 5000/5242\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5585\n",
      "Processing molecule 2000/5585\n",
      "Processing molecule 3000/5585\n",
      "Processing molecule 4000/5585\n",
      "Processing molecule 5000/5585\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6258\n",
      "Processing molecule 2000/6258\n",
      "Processing molecule 3000/6258\n",
      "Processing molecule 4000/6258\n",
      "Processing molecule 5000/6258\n",
      "Processing molecule 6000/6258\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5822\n",
      "Processing molecule 2000/5822\n",
      "Processing molecule 3000/5822\n",
      "Processing molecule 4000/5822\n",
      "Processing molecule 5000/5822\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5239\n",
      "Processing molecule 2000/5239\n",
      "Processing molecule 3000/5239\n",
      "Processing molecule 4000/5239\n",
      "Processing molecule 5000/5239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6366\n",
      "Processing molecule 2000/6366\n",
      "Processing molecule 3000/6366\n",
      "Processing molecule 4000/6366\n",
      "Processing molecule 5000/6366\n",
      "Processing molecule 6000/6366\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5811\n",
      "Processing molecule 2000/5811\n",
      "Processing molecule 3000/5811\n",
      "Processing molecule 4000/5811\n",
      "Processing molecule 5000/5811\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5244\n",
      "Processing molecule 2000/5244\n",
      "Processing molecule 3000/5244\n",
      "Processing molecule 4000/5244\n",
      "Processing molecule 5000/5244\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6105\n",
      "Processing molecule 2000/6105\n",
      "Processing molecule 3000/6105\n",
      "Processing molecule 4000/6105\n",
      "Processing molecule 5000/6105\n",
      "Processing molecule 6000/6105\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5292 - train negative label: 64918\n",
      "up and down sampling => train positive label: 31752 - train negative label: 32459\n",
      "Test positive label: 570 - Test negative label: 7166\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.6058 - accuracy: 0.6823 - mae: 0.4156 - mse: 0.2073 - auc_19: 0.7432\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5323 - accuracy: 0.7478 - mae: 0.3544 - mse: 0.1757 - auc_19: 0.8152\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5091 - accuracy: 0.7619 - mae: 0.3362 - mse: 0.1664 - auc_19: 0.8334\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4977 - accuracy: 0.7673 - mae: 0.3276 - mse: 0.1624 - auc_19: 0.8408\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4845 - accuracy: 0.7747 - mae: 0.3174 - mse: 0.1574 - auc_19: 0.8499\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4770 - accuracy: 0.7768 - mae: 0.3119 - mse: 0.1547 - auc_19: 0.8550\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4694 - accuracy: 0.7798 - mae: 0.3066 - mse: 0.1519 - auc_19: 0.8598\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4632 - accuracy: 0.7850 - mae: 0.3017 - mse: 0.1498 - auc_19: 0.8636\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4599 - accuracy: 0.7869 - mae: 0.2985 - mse: 0.1485 - auc_19: 0.8658\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4550 - accuracy: 0.7880 - mae: 0.2953 - mse: 0.1467 - auc_19: 0.8688\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "77\n",
      "76\n",
      "76\n",
      "74\n",
      "68\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4490 - accuracy: 0.7919 - mae: 0.2915 - mse: 0.1445 - auc_19: 0.8727\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4438 - accuracy: 0.7947 - mae: 0.2869 - mse: 0.1426 - auc_19: 0.8759\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4389 - accuracy: 0.7990 - mae: 0.2825 - mse: 0.1405 - auc_19: 0.8789\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4350 - accuracy: 0.8003 - mae: 0.2802 - mse: 0.1395 - auc_19: 0.8809\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4309 - accuracy: 0.8023 - mae: 0.2774 - mse: 0.1379 - auc_19: 0.8833\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4275 - accuracy: 0.8052 - mae: 0.2744 - mse: 0.1365 - auc_19: 0.8853\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4264 - accuracy: 0.8046 - mae: 0.2740 - mse: 0.1362 - auc_19: 0.8859\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4188 - accuracy: 0.8093 - mae: 0.2681 - mse: 0.1336 - auc_19: 0.8901\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4194 - accuracy: 0.8093 - mae: 0.2687 - mse: 0.1337 - auc_19: 0.8898\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4184 - accuracy: 0.8112 - mae: 0.2677 - mse: 0.1334 - auc_19: 0.8902\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4125 - accuracy: 0.8141 - mae: 0.2634 - mse: 0.1310 - auc_19: 0.8936\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4133 - accuracy: 0.8138 - mae: 0.2639 - mse: 0.1315 - auc_19: 0.8930\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4108 - accuracy: 0.8156 - mae: 0.2621 - mse: 0.1307 - auc_19: 0.8942\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4085 - accuracy: 0.8152 - mae: 0.2608 - mse: 0.1299 - auc_19: 0.8956\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4079 - accuracy: 0.8179 - mae: 0.2598 - mse: 0.1294 - auc_19: 0.8959\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4068 - accuracy: 0.8177 - mae: 0.2590 - mse: 0.1292 - auc_19: 0.8964\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4079 - accuracy: 0.8173 - mae: 0.2597 - mse: 0.1295 - auc_19: 0.8959\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4063 - accuracy: 0.8193 - mae: 0.2586 - mse: 0.1288 - auc_19: 0.8967\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4049 - accuracy: 0.8196 - mae: 0.2580 - mse: 0.1286 - auc_19: 0.8973\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4052 - accuracy: 0.8202 - mae: 0.2579 - mse: 0.1286 - auc_19: 0.8972\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4021 - accuracy: 0.8208 - mae: 0.2554 - mse: 0.1276 - auc_19: 0.8986\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3980 - accuracy: 0.8226 - mae: 0.2533 - mse: 0.1262 - auc_19: 0.9009\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4018 - accuracy: 0.8228 - mae: 0.2550 - mse: 0.1271 - auc_19: 0.8988\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4011 - accuracy: 0.8228 - mae: 0.2545 - mse: 0.1270 - auc_19: 0.8990\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4003 - accuracy: 0.8236 - mae: 0.2544 - mse: 0.1267 - auc_19: 0.8997\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3983 - accuracy: 0.8249 - mae: 0.2519 - mse: 0.1259 - auc_19: 0.9006\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3951 - accuracy: 0.8254 - mae: 0.2511 - mse: 0.1250 - auc_19: 0.9021\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3955 - accuracy: 0.8258 - mae: 0.2508 - mse: 0.1251 - auc_19: 0.9020\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3943 - accuracy: 0.8257 - mae: 0.2501 - mse: 0.1247 - auc_19: 0.9025\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3962 - accuracy: 0.8248 - mae: 0.2508 - mse: 0.1252 - auc_19: 0.9017\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "4\n",
      "242/242 [==============================] - 0s 1ms/step - loss: 0.2695 - accuracy: 0.8918 - mae: 0.1750 - mse: 0.0794 - auc_19: 0.8239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6256\n",
      "Processing molecule 2000/6256\n",
      "Processing molecule 3000/6256\n",
      "Processing molecule 4000/6256\n",
      "Processing molecule 5000/6256\n",
      "Processing molecule 6000/6256\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5863\n",
      "Processing molecule 2000/5863\n",
      "Processing molecule 3000/5863\n",
      "Processing molecule 4000/5863\n",
      "Processing molecule 5000/5863\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5194\n",
      "Processing molecule 2000/5194\n",
      "Processing molecule 3000/5194\n",
      "Processing molecule 4000/5194\n",
      "Processing molecule 5000/5194\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4970\n",
      "Processing molecule 2000/4970\n",
      "Processing molecule 3000/4970\n",
      "Processing molecule 4000/4970\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4854\n",
      "Processing molecule 2000/4854\n",
      "Processing molecule 3000/4854\n",
      "Processing molecule 4000/4854\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5943\n",
      "Processing molecule 2000/5943\n",
      "Processing molecule 3000/5943\n",
      "Processing molecule 4000/5943\n",
      "Processing molecule 5000/5943\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5633\n",
      "Processing molecule 2000/5633\n",
      "Processing molecule 3000/5633\n",
      "Processing molecule 4000/5633\n",
      "Processing molecule 5000/5633\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4401\n",
      "Processing molecule 2000/4401\n",
      "Processing molecule 3000/4401\n",
      "Processing molecule 4000/4401\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6134\n",
      "Processing molecule 2000/6134\n",
      "Processing molecule 3000/6134\n",
      "Processing molecule 4000/6134\n",
      "Processing molecule 5000/6134\n",
      "Processing molecule 6000/6134\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5478\n",
      "Processing molecule 2000/5478\n",
      "Processing molecule 3000/5478\n",
      "Processing molecule 4000/5478\n",
      "Processing molecule 5000/5478\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4401\n",
      "Processing molecule 2000/4401\n",
      "Processing molecule 3000/4401\n",
      "Processing molecule 4000/4401\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5711\n",
      "Processing molecule 2000/5711\n",
      "Processing molecule 3000/5711\n",
      "Processing molecule 4000/5711\n",
      "Processing molecule 5000/5711\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6538\n",
      "Processing molecule 2000/6538\n",
      "Processing molecule 3000/6538\n",
      "Processing molecule 4000/6538\n",
      "Processing molecule 5000/6538\n",
      "Processing molecule 6000/6538\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6075\n",
      "Processing molecule 2000/6075\n",
      "Processing molecule 3000/6075\n",
      "Processing molecule 4000/6075\n",
      "Processing molecule 5000/6075\n",
      "Processing molecule 6000/6075\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5894\n",
      "Processing molecule 2000/5894\n",
      "Processing molecule 3000/5894\n",
      "Processing molecule 4000/5894\n",
      "Processing molecule 5000/5894\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5239\n",
      "Processing molecule 2000/5239\n",
      "Processing molecule 3000/5239\n",
      "Processing molecule 4000/5239\n",
      "Processing molecule 5000/5239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5580\n",
      "Processing molecule 2000/5580\n",
      "Processing molecule 3000/5580\n",
      "Processing molecule 4000/5580\n",
      "Processing molecule 5000/5580\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6261\n",
      "Processing molecule 2000/6261\n",
      "Processing molecule 3000/6261\n",
      "Processing molecule 4000/6261\n",
      "Processing molecule 5000/6261\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 6000/6261\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5807\n",
      "Processing molecule 2000/5807\n",
      "Processing molecule 3000/5807\n",
      "Processing molecule 4000/5807\n",
      "Processing molecule 5000/5807\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5241\n",
      "Processing molecule 2000/5241\n",
      "Processing molecule 3000/5241\n",
      "Processing molecule 4000/5241\n",
      "Processing molecule 5000/5241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6369\n",
      "Processing molecule 2000/6369\n",
      "Processing molecule 3000/6369\n",
      "Processing molecule 4000/6369\n",
      "Processing molecule 5000/6369\n",
      "Processing molecule 6000/6369\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5813\n",
      "Processing molecule 2000/5813\n",
      "Processing molecule 3000/5813\n",
      "Processing molecule 4000/5813\n",
      "Processing molecule 5000/5813\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6095\n",
      "Processing molecule 2000/6095\n",
      "Processing molecule 3000/6095\n",
      "Processing molecule 4000/6095\n",
      "Processing molecule 5000/6095\n",
      "Processing molecule 6000/6095\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5305 - train negative label: 64838\n",
      "up and down sampling => train positive label: 31830 - train negative label: 32419\n",
      "Test positive label: 557 - Test negative label: 7246\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.5800 - accuracy: 0.7040 - mae: 0.3929 - mse: 0.1963 - auc_20: 0.7704\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.5189 - accuracy: 0.7556 - mae: 0.3439 - mse: 0.1706 - auc_20: 0.8253\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.5001 - accuracy: 0.7654 - mae: 0.3295 - mse: 0.1636 - auc_20: 0.8386\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4881 - accuracy: 0.7707 - mae: 0.3206 - mse: 0.1589 - auc_20: 0.8474\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4780 - accuracy: 0.7762 - mae: 0.3130 - mse: 0.1552 - auc_20: 0.8541\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4704 - accuracy: 0.7829 - mae: 0.3070 - mse: 0.1520 - auc_20: 0.8594\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4627 - accuracy: 0.7865 - mae: 0.3010 - mse: 0.1493 - auc_20: 0.8642\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4576 - accuracy: 0.7888 - mae: 0.2970 - mse: 0.1473 - auc_20: 0.8675\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4524 - accuracy: 0.7919 - mae: 0.2933 - mse: 0.1453 - auc_20: 0.8709\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4456 - accuracy: 0.7971 - mae: 0.2879 - mse: 0.1428 - auc_20: 0.8749\n",
      "79\n",
      "78\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "70\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4436 - accuracy: 0.7982 - mae: 0.2862 - mse: 0.1422 - auc_20: 0.8760\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4390 - accuracy: 0.8003 - mae: 0.2827 - mse: 0.1404 - auc_20: 0.8788\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4349 - accuracy: 0.8029 - mae: 0.2797 - mse: 0.1389 - auc_20: 0.8813\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4304 - accuracy: 0.8068 - mae: 0.2761 - mse: 0.1371 - auc_20: 0.8840\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4269 - accuracy: 0.8079 - mae: 0.2742 - mse: 0.1361 - auc_20: 0.8858\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4199 - accuracy: 0.8113 - mae: 0.2686 - mse: 0.1336 - auc_20: 0.8896\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4192 - accuracy: 0.8105 - mae: 0.2683 - mse: 0.1333 - auc_20: 0.8901\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4171 - accuracy: 0.8125 - mae: 0.2658 - mse: 0.1326 - auc_20: 0.8911\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4203 - accuracy: 0.8112 - mae: 0.2686 - mse: 0.1338 - auc_20: 0.8895\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4188 - accuracy: 0.8124 - mae: 0.2680 - mse: 0.1333 - auc_20: 0.8901\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4197 - accuracy: 0.8130 - mae: 0.2680 - mse: 0.1334 - auc_20: 0.8894\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4201 - accuracy: 0.8138 - mae: 0.2684 - mse: 0.1337 - auc_20: 0.8891\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4184 - accuracy: 0.8129 - mae: 0.2671 - mse: 0.1332 - auc_20: 0.8903\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4182 - accuracy: 0.8123 - mae: 0.2676 - mse: 0.1331 - auc_20: 0.8902\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4169 - accuracy: 0.8148 - mae: 0.2660 - mse: 0.1325 - auc_20: 0.8909\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4140 - accuracy: 0.8142 - mae: 0.2646 - mse: 0.1318 - auc_20: 0.8923\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4132 - accuracy: 0.8145 - mae: 0.2637 - mse: 0.1314 - auc_20: 0.8927\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4077 - accuracy: 0.8169 - mae: 0.2594 - mse: 0.1293 - auc_20: 0.8960\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4116 - accuracy: 0.8157 - mae: 0.2621 - mse: 0.1308 - auc_20: 0.8935\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4099 - accuracy: 0.8176 - mae: 0.2607 - mse: 0.1300 - auc_20: 0.8946\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "244/244 [==============================] - 0s 2ms/step - loss: 0.3364 - accuracy: 0.8417 - mae: 0.2215 - mse: 0.1051 - auc_20: 0.8028\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6237\n",
      "Processing molecule 2000/6237\n",
      "Processing molecule 3000/6237\n",
      "Processing molecule 4000/6237\n",
      "Processing molecule 5000/6237\n",
      "Processing molecule 6000/6237\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5846\n",
      "Processing molecule 2000/5846\n",
      "Processing molecule 3000/5846\n",
      "Processing molecule 4000/5846\n",
      "Processing molecule 5000/5846\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5196\n",
      "Processing molecule 2000/5196\n",
      "Processing molecule 3000/5196\n",
      "Processing molecule 4000/5196\n",
      "Processing molecule 5000/5196\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4936\n",
      "Processing molecule 2000/4936\n",
      "Processing molecule 3000/4936\n",
      "Processing molecule 4000/4936\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4844\n",
      "Processing molecule 2000/4844\n",
      "Processing molecule 3000/4844\n",
      "Processing molecule 4000/4844\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5939\n",
      "Processing molecule 2000/5939\n",
      "Processing molecule 3000/5939\n",
      "Processing molecule 4000/5939\n",
      "Processing molecule 5000/5939\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5627\n",
      "Processing molecule 2000/5627\n",
      "Processing molecule 3000/5627\n",
      "Processing molecule 4000/5627\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 5000/5627\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4409\n",
      "Processing molecule 2000/4409\n",
      "Processing molecule 3000/4409\n",
      "Processing molecule 4000/4409\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6113\n",
      "Processing molecule 2000/6113\n",
      "Processing molecule 3000/6113\n",
      "Processing molecule 4000/6113\n",
      "Processing molecule 5000/6113\n",
      "Processing molecule 6000/6113\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5500\n",
      "Processing molecule 2000/5500\n",
      "Processing molecule 3000/5500\n",
      "Processing molecule 4000/5500\n",
      "Processing molecule 5000/5500\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4413\n",
      "Processing molecule 2000/4413\n",
      "Processing molecule 3000/4413\n",
      "Processing molecule 4000/4413\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5709\n",
      "Processing molecule 2000/5709\n",
      "Processing molecule 3000/5709\n",
      "Processing molecule 4000/5709\n",
      "Processing molecule 5000/5709\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6524\n",
      "Processing molecule 2000/6524\n",
      "Processing molecule 3000/6524\n",
      "Processing molecule 4000/6524\n",
      "Processing molecule 5000/6524\n",
      "Processing molecule 6000/6524\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6065\n",
      "Processing molecule 2000/6065\n",
      "Processing molecule 3000/6065\n",
      "Processing molecule 4000/6065\n",
      "Processing molecule 5000/6065\n",
      "Processing molecule 6000/6065\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5882\n",
      "Processing molecule 2000/5882\n",
      "Processing molecule 3000/5882\n",
      "Processing molecule 4000/5882\n",
      "Processing molecule 5000/5882\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5202\n",
      "Processing molecule 2000/5202\n",
      "Processing molecule 3000/5202\n",
      "Processing molecule 4000/5202\n",
      "Processing molecule 5000/5202\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5562\n",
      "Processing molecule 2000/5562\n",
      "Processing molecule 3000/5562\n",
      "Processing molecule 4000/5562\n",
      "Processing molecule 5000/5562\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6249\n",
      "Processing molecule 2000/6249\n",
      "Processing molecule 3000/6249\n",
      "Processing molecule 4000/6249\n",
      "Processing molecule 5000/6249\n",
      "Processing molecule 6000/6249\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5792\n",
      "Processing molecule 2000/5792\n",
      "Processing molecule 3000/5792\n",
      "Processing molecule 4000/5792\n",
      "Processing molecule 5000/5792\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5254\n",
      "Processing molecule 2000/5254\n",
      "Processing molecule 3000/5254\n",
      "Processing molecule 4000/5254\n",
      "Processing molecule 5000/5254\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6355\n",
      "Processing molecule 2000/6355\n",
      "Processing molecule 3000/6355\n",
      "Processing molecule 4000/6355\n",
      "Processing molecule 5000/6355\n",
      "Processing molecule 6000/6355\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5832\n",
      "Processing molecule 2000/5832\n",
      "Processing molecule 3000/5832\n",
      "Processing molecule 4000/5832\n",
      "Processing molecule 5000/5832\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6078\n",
      "Processing molecule 2000/6078\n",
      "Processing molecule 3000/6078\n",
      "Processing molecule 4000/6078\n",
      "Processing molecule 5000/6078\n",
      "Processing molecule 6000/6078\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5257 - train negative label: 64769\n",
      "up and down sampling => train positive label: 31542 - train negative label: 32384\n",
      "Test positive label: 605 - Test negative label: 7315\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.5813 - accuracy: 0.7023 - mae: 0.3944 - mse: 0.1965 - auc_21: 0.7704\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.5237 - accuracy: 0.7517 - mae: 0.3480 - mse: 0.1725 - auc_21: 0.8215\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.5021 - accuracy: 0.7633 - mae: 0.3314 - mse: 0.1642 - auc_21: 0.8377\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4923 - accuracy: 0.7684 - mae: 0.3235 - mse: 0.1605 - auc_21: 0.8446\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4807 - accuracy: 0.7753 - mae: 0.3152 - mse: 0.1562 - auc_21: 0.8525\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4734 - accuracy: 0.7796 - mae: 0.3097 - mse: 0.1534 - auc_21: 0.8573\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4658 - accuracy: 0.7841 - mae: 0.3038 - mse: 0.1507 - auc_21: 0.8621\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4577 - accuracy: 0.7906 - mae: 0.2971 - mse: 0.1474 - auc_21: 0.8675\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4539 - accuracy: 0.7908 - mae: 0.2945 - mse: 0.1461 - auc_21: 0.8698\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4504 - accuracy: 0.7944 - mae: 0.2911 - mse: 0.1446 - auc_21: 0.8721\n",
      "79\n",
      "79\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "76\n",
      "75\n",
      "70\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4425 - accuracy: 0.7975 - mae: 0.2855 - mse: 0.1419 - auc_21: 0.8766\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4424 - accuracy: 0.7975 - mae: 0.2854 - mse: 0.1419 - auc_21: 0.8768\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4335 - accuracy: 0.8037 - mae: 0.2789 - mse: 0.1384 - auc_21: 0.8820\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4298 - accuracy: 0.8059 - mae: 0.2765 - mse: 0.1373 - auc_21: 0.8838\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4266 - accuracy: 0.8064 - mae: 0.2734 - mse: 0.1362 - auc_21: 0.8857\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4242 - accuracy: 0.8079 - mae: 0.2723 - mse: 0.1354 - auc_21: 0.8871\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4196 - accuracy: 0.8105 - mae: 0.2686 - mse: 0.1337 - auc_21: 0.8897\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4183 - accuracy: 0.8104 - mae: 0.2679 - mse: 0.1334 - auc_21: 0.8902\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4152 - accuracy: 0.8136 - mae: 0.2656 - mse: 0.1320 - auc_21: 0.8919\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4141 - accuracy: 0.8127 - mae: 0.2651 - mse: 0.1319 - auc_21: 0.8923\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8157 - mae: 0.2628 - mse: 0.1305 - auc_21: 0.8942\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4079 - accuracy: 0.8179 - mae: 0.2595 - mse: 0.1295 - auc_21: 0.8957\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8154 - mae: 0.2624 - mse: 0.1307 - auc_21: 0.8940\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4068 - accuracy: 0.8194 - mae: 0.2587 - mse: 0.1289 - auc_21: 0.8962\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4075 - accuracy: 0.8182 - mae: 0.2603 - mse: 0.1296 - auc_21: 0.8957\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4055 - accuracy: 0.8196 - mae: 0.2581 - mse: 0.1288 - auc_21: 0.8970\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4051 - accuracy: 0.8185 - mae: 0.2583 - mse: 0.1287 - auc_21: 0.8968\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4042 - accuracy: 0.8186 - mae: 0.2574 - mse: 0.1285 - auc_21: 0.8971\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4026 - accuracy: 0.8207 - mae: 0.2562 - mse: 0.1277 - auc_21: 0.8984\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.3989 - accuracy: 0.8232 - mae: 0.2543 - mse: 0.1265 - auc_21: 0.9001\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.3991 - accuracy: 0.8237 - mae: 0.2538 - mse: 0.1262 - auc_21: 0.9002\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4035 - accuracy: 0.8203 - mae: 0.2566 - mse: 0.1281 - auc_21: 0.8976\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4041 - accuracy: 0.8218 - mae: 0.2568 - mse: 0.1278 - auc_21: 0.8975\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4072 - accuracy: 0.8180 - mae: 0.2590 - mse: 0.1294 - auc_21: 0.8954\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4063 - accuracy: 0.8194 - mae: 0.2589 - mse: 0.1291 - auc_21: 0.8960\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4044 - accuracy: 0.8185 - mae: 0.2581 - mse: 0.1286 - auc_21: 0.8970\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4008 - accuracy: 0.8227 - mae: 0.2553 - mse: 0.1272 - auc_21: 0.8989\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4027 - accuracy: 0.8214 - mae: 0.2558 - mse: 0.1277 - auc_21: 0.8979\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4005 - accuracy: 0.8229 - mae: 0.2543 - mse: 0.1269 - auc_21: 0.8990\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.3999 - accuracy: 0.8228 - mae: 0.2545 - mse: 0.1269 - auc_21: 0.8991\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4068 - accuracy: 0.8202 - mae: 0.2583 - mse: 0.1290 - auc_21: 0.8957\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4070 - accuracy: 0.8201 - mae: 0.2587 - mse: 0.1289 - auc_21: 0.8959\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4100 - accuracy: 0.8185 - mae: 0.2606 - mse: 0.1302 - auc_21: 0.8939\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4094 - accuracy: 0.8163 - mae: 0.2608 - mse: 0.1302 - auc_21: 0.8941\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4089 - accuracy: 0.8191 - mae: 0.2604 - mse: 0.1299 - auc_21: 0.8945\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4060 - accuracy: 0.8209 - mae: 0.2585 - mse: 0.1288 - auc_21: 0.8960\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4072 - accuracy: 0.8191 - mae: 0.2597 - mse: 0.1296 - auc_21: 0.8949\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4129 - accuracy: 0.8166 - mae: 0.2632 - mse: 0.1313 - auc_21: 0.8922\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4142 - accuracy: 0.8152 - mae: 0.2643 - mse: 0.1318 - auc_21: 0.8914\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8158 - mae: 0.2628 - mse: 0.1313 - auc_21: 0.8927\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4107 - accuracy: 0.8163 - mae: 0.2626 - mse: 0.1309 - auc_21: 0.8930\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4088 - accuracy: 0.8180 - mae: 0.2605 - mse: 0.1302 - auc_21: 0.8942\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4147 - accuracy: 0.8149 - mae: 0.2649 - mse: 0.1322 - auc_21: 0.8909\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4241 - accuracy: 0.8095 - mae: 0.2720 - mse: 0.1356 - auc_21: 0.8855\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4268 - accuracy: 0.8070 - mae: 0.2733 - mse: 0.1368 - auc_21: 0.8836\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4272 - accuracy: 0.8075 - mae: 0.2738 - mse: 0.1366 - auc_21: 0.8839\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4259 - accuracy: 0.8068 - mae: 0.2735 - mse: 0.1364 - auc_21: 0.8846\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4303 - accuracy: 0.8058 - mae: 0.2759 - mse: 0.1378 - auc_21: 0.8817\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4334 - accuracy: 0.8044 - mae: 0.2785 - mse: 0.1388 - auc_21: 0.8796\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4302 - accuracy: 0.8062 - mae: 0.2763 - mse: 0.1375 - auc_21: 0.8815\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4307 - accuracy: 0.8054 - mae: 0.2762 - mse: 0.1379 - auc_21: 0.8807\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4318 - accuracy: 0.8062 - mae: 0.2771 - mse: 0.1383 - auc_21: 0.8802\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4297 - accuracy: 0.8055 - mae: 0.2756 - mse: 0.1375 - auc_21: 0.8815\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4274 - accuracy: 0.8075 - mae: 0.2743 - mse: 0.1369 - auc_21: 0.8823\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4277 - accuracy: 0.8076 - mae: 0.2745 - mse: 0.1369 - auc_21: 0.8826\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4266 - accuracy: 0.8063 - mae: 0.2729 - mse: 0.1366 - auc_21: 0.8831\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4238 - accuracy: 0.8110 - mae: 0.2710 - mse: 0.1351 - auc_21: 0.8853\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4179 - accuracy: 0.8137 - mae: 0.2669 - mse: 0.1331 - auc_21: 0.8879\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4176 - accuracy: 0.8126 - mae: 0.2670 - mse: 0.1333 - auc_21: 0.8879\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4140 - accuracy: 0.8134 - mae: 0.2642 - mse: 0.1321 - auc_21: 0.8899\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4156 - accuracy: 0.8147 - mae: 0.2659 - mse: 0.1323 - auc_21: 0.8889\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4130 - accuracy: 0.8142 - mae: 0.2643 - mse: 0.1317 - auc_21: 0.8906\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4129 - accuracy: 0.8143 - mae: 0.2631 - mse: 0.1315 - auc_21: 0.8907\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4148 - accuracy: 0.8136 - mae: 0.2651 - mse: 0.1324 - auc_21: 0.8897\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4220 - accuracy: 0.8099 - mae: 0.2704 - mse: 0.1348 - auc_21: 0.8853\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4189 - accuracy: 0.8103 - mae: 0.2682 - mse: 0.1340 - auc_21: 0.8870\n",
      "Epoch 7/10\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4217 - accuracy: 0.8092 - mae: 0.2701 - mse: 0.1349 - auc_21: 0.8854\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4166 - accuracy: 0.8115 - mae: 0.2668 - mse: 0.1332 - auc_21: 0.8879\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4180 - accuracy: 0.8109 - mae: 0.2684 - mse: 0.1340 - auc_21: 0.8867\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4164 - accuracy: 0.8124 - mae: 0.2666 - mse: 0.1332 - auc_21: 0.8880\n",
      "81\n",
      "81\n",
      "80\n",
      "81\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4156 - accuracy: 0.8129 - mae: 0.2664 - mse: 0.1329 - auc_21: 0.8882\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4146 - accuracy: 0.8122 - mae: 0.2656 - mse: 0.1325 - auc_21: 0.8890\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4145 - accuracy: 0.8130 - mae: 0.2657 - mse: 0.1327 - auc_21: 0.8884\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4212 - accuracy: 0.8081 - mae: 0.2708 - mse: 0.1352 - auc_21: 0.8843\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4266 - accuracy: 0.8071 - mae: 0.2742 - mse: 0.1370 - auc_21: 0.8812\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4257 - accuracy: 0.8061 - mae: 0.2741 - mse: 0.1369 - auc_21: 0.8815\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4241 - accuracy: 0.8076 - mae: 0.2729 - mse: 0.1362 - auc_21: 0.8824\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4243 - accuracy: 0.8074 - mae: 0.2734 - mse: 0.1363 - auc_21: 0.8819\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4224 - accuracy: 0.8071 - mae: 0.2717 - mse: 0.1358 - auc_21: 0.8831\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4209 - accuracy: 0.8081 - mae: 0.2713 - mse: 0.1352 - auc_21: 0.8838\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4248 - accuracy: 0.8076 - mae: 0.2733 - mse: 0.1364 - auc_21: 0.8816\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4261 - accuracy: 0.8067 - mae: 0.2738 - mse: 0.1369 - auc_21: 0.8814\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4208 - accuracy: 0.8087 - mae: 0.2709 - mse: 0.1351 - auc_21: 0.8837\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4221 - accuracy: 0.8082 - mae: 0.2711 - mse: 0.1355 - auc_21: 0.8833\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4212 - accuracy: 0.8078 - mae: 0.2710 - mse: 0.1354 - auc_21: 0.8835\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4202 - accuracy: 0.8090 - mae: 0.2702 - mse: 0.1352 - auc_21: 0.8838\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4206 - accuracy: 0.8093 - mae: 0.2710 - mse: 0.1352 - auc_21: 0.8835\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4222 - accuracy: 0.8092 - mae: 0.2717 - mse: 0.1356 - auc_21: 0.8831\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4230 - accuracy: 0.8080 - mae: 0.2722 - mse: 0.1359 - auc_21: 0.8826\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4223 - accuracy: 0.8064 - mae: 0.2725 - mse: 0.1358 - auc_21: 0.8826\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "10\n",
      "248/248 [==============================] - 1s 2ms/step - loss: 0.3069 - accuracy: 0.9067 - mae: 0.1250 - mse: 0.0756 - auc_21: 0.7793\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6255\n",
      "Processing molecule 2000/6255\n",
      "Processing molecule 3000/6255\n",
      "Processing molecule 4000/6255\n",
      "Processing molecule 5000/6255\n",
      "Processing molecule 6000/6255\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5858\n",
      "Processing molecule 2000/5858\n",
      "Processing molecule 3000/5858\n",
      "Processing molecule 4000/5858\n",
      "Processing molecule 5000/5858\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5206\n",
      "Processing molecule 2000/5206\n",
      "Processing molecule 3000/5206\n",
      "Processing molecule 4000/5206\n",
      "Processing molecule 5000/5206\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4943\n",
      "Processing molecule 2000/4943\n",
      "Processing molecule 3000/4943\n",
      "Processing molecule 4000/4943\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4843\n",
      "Processing molecule 2000/4843\n",
      "Processing molecule 3000/4843\n",
      "Processing molecule 4000/4843\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5924\n",
      "Processing molecule 2000/5924\n",
      "Processing molecule 3000/5924\n",
      "Processing molecule 4000/5924\n",
      "Processing molecule 5000/5924\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5624\n",
      "Processing molecule 2000/5624\n",
      "Processing molecule 3000/5624\n",
      "Processing molecule 4000/5624\n",
      "Processing molecule 5000/5624\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4387\n",
      "Processing molecule 2000/4387\n",
      "Processing molecule 3000/4387\n",
      "Processing molecule 4000/4387\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6111\n",
      "Processing molecule 2000/6111\n",
      "Processing molecule 3000/6111\n",
      "Processing molecule 4000/6111\n",
      "Processing molecule 5000/6111\n",
      "Processing molecule 6000/6111\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5483\n",
      "Processing molecule 2000/5483\n",
      "Processing molecule 3000/5483\n",
      "Processing molecule 4000/5483\n",
      "Processing molecule 5000/5483\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4378\n",
      "Processing molecule 2000/4378\n",
      "Processing molecule 3000/4378\n",
      "Processing molecule 4000/4378\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5690\n",
      "Processing molecule 2000/5690\n",
      "Processing molecule 3000/5690\n",
      "Processing molecule 4000/5690\n",
      "Processing molecule 5000/5690\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6534\n",
      "Processing molecule 2000/6534\n",
      "Processing molecule 3000/6534\n",
      "Processing molecule 4000/6534\n",
      "Processing molecule 5000/6534\n",
      "Processing molecule 6000/6534\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6067\n",
      "Processing molecule 2000/6067\n",
      "Processing molecule 3000/6067\n",
      "Processing molecule 4000/6067\n",
      "Processing molecule 5000/6067\n",
      "Processing molecule 6000/6067\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5895\n",
      "Processing molecule 2000/5895\n",
      "Processing molecule 3000/5895\n",
      "Processing molecule 4000/5895\n",
      "Processing molecule 5000/5895\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5212\n",
      "Processing molecule 2000/5212\n",
      "Processing molecule 3000/5212\n",
      "Processing molecule 4000/5212\n",
      "Processing molecule 5000/5212\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5560\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 2000/5560\n",
      "Processing molecule 3000/5560\n",
      "Processing molecule 4000/5560\n",
      "Processing molecule 5000/5560\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6247\n",
      "Processing molecule 2000/6247\n",
      "Processing molecule 3000/6247\n",
      "Processing molecule 4000/6247\n",
      "Processing molecule 5000/6247\n",
      "Processing molecule 6000/6247\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5793\n",
      "Processing molecule 2000/5793\n",
      "Processing molecule 3000/5793\n",
      "Processing molecule 4000/5793\n",
      "Processing molecule 5000/5793\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5238\n",
      "Processing molecule 2000/5238\n",
      "Processing molecule 3000/5238\n",
      "Processing molecule 4000/5238\n",
      "Processing molecule 5000/5238\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6353\n",
      "Processing molecule 2000/6353\n",
      "Processing molecule 3000/6353\n",
      "Processing molecule 4000/6353\n",
      "Processing molecule 5000/6353\n",
      "Processing molecule 6000/6353\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5814\n",
      "Processing molecule 2000/5814\n",
      "Processing molecule 3000/5814\n",
      "Processing molecule 4000/5814\n",
      "Processing molecule 5000/5814\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5199\n",
      "Processing molecule 2000/5199\n",
      "Processing molecule 3000/5199\n",
      "Processing molecule 4000/5199\n",
      "Processing molecule 5000/5199\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6079\n",
      "Processing molecule 2000/6079\n",
      "Processing molecule 3000/6079\n",
      "Processing molecule 4000/6079\n",
      "Processing molecule 5000/6079\n",
      "Processing molecule 6000/6079\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5289 - train negative label: 64702\n",
      "up and down sampling => train positive label: 31734 - train negative label: 32351\n",
      "Test positive label: 573 - Test negative label: 7382\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.5698 - accuracy: 0.7180 - mae: 0.3847 - mse: 0.1916 - auc_22: 0.7824\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.5233 - accuracy: 0.7540 - mae: 0.3474 - mse: 0.1721 - auc_22: 0.8225\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.5031 - accuracy: 0.7636 - mae: 0.3319 - mse: 0.1644 - auc_22: 0.8369\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4899 - accuracy: 0.7713 - mae: 0.3218 - mse: 0.1595 - auc_22: 0.8464\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4821 - accuracy: 0.7748 - mae: 0.3158 - mse: 0.1564 - auc_22: 0.8518\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4742 - accuracy: 0.7792 - mae: 0.3096 - mse: 0.1536 - auc_22: 0.8568\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4661 - accuracy: 0.7833 - mae: 0.3043 - mse: 0.1510 - auc_22: 0.8617\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4608 - accuracy: 0.7877 - mae: 0.2997 - mse: 0.1488 - auc_22: 0.8654\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4552 - accuracy: 0.7920 - mae: 0.2954 - mse: 0.1467 - auc_22: 0.8689\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4490 - accuracy: 0.7958 - mae: 0.2906 - mse: 0.1444 - auc_22: 0.8727\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4430 - accuracy: 0.7983 - mae: 0.2867 - mse: 0.1424 - auc_22: 0.8761\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4395 - accuracy: 0.7997 - mae: 0.2841 - mse: 0.1411 - auc_22: 0.8785\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4351 - accuracy: 0.8039 - mae: 0.2804 - mse: 0.1392 - auc_22: 0.8812\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4307 - accuracy: 0.8044 - mae: 0.2771 - mse: 0.1379 - auc_22: 0.8834\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4282 - accuracy: 0.8051 - mae: 0.2758 - mse: 0.1370 - auc_22: 0.8850\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4242 - accuracy: 0.8086 - mae: 0.2732 - mse: 0.1353 - auc_22: 0.8873\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4228 - accuracy: 0.8105 - mae: 0.2713 - mse: 0.1348 - auc_22: 0.8879\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4195 - accuracy: 0.8124 - mae: 0.2686 - mse: 0.1335 - auc_22: 0.8899\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4151 - accuracy: 0.8132 - mae: 0.2659 - mse: 0.1323 - auc_22: 0.8921\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4130 - accuracy: 0.8159 - mae: 0.2643 - mse: 0.1313 - auc_22: 0.8933\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4099 - accuracy: 0.8165 - mae: 0.2618 - mse: 0.1304 - auc_22: 0.8949\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4096 - accuracy: 0.8182 - mae: 0.2611 - mse: 0.1301 - auc_22: 0.8951\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4065 - accuracy: 0.8206 - mae: 0.2593 - mse: 0.1288 - auc_22: 0.8968\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4076 - accuracy: 0.8189 - mae: 0.2602 - mse: 0.1295 - auc_22: 0.8960\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4077 - accuracy: 0.8186 - mae: 0.2599 - mse: 0.1295 - auc_22: 0.8956\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4055 - accuracy: 0.8194 - mae: 0.2588 - mse: 0.1288 - auc_22: 0.8967\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4062 - accuracy: 0.8203 - mae: 0.2591 - mse: 0.1289 - auc_22: 0.8963\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4088 - accuracy: 0.8182 - mae: 0.2604 - mse: 0.1297 - auc_22: 0.8952\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4051 - accuracy: 0.8205 - mae: 0.2579 - mse: 0.1284 - auc_22: 0.8971\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4016 - accuracy: 0.8229 - mae: 0.2552 - mse: 0.1272 - auc_22: 0.8985\n",
      "82\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4065 - accuracy: 0.8201 - mae: 0.2584 - mse: 0.1290 - auc_22: 0.8960\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4119 - accuracy: 0.8163 - mae: 0.2631 - mse: 0.1309 - auc_22: 0.8932\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4120 - accuracy: 0.8169 - mae: 0.2630 - mse: 0.1309 - auc_22: 0.8930\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4154 - accuracy: 0.8141 - mae: 0.2649 - mse: 0.1322 - auc_22: 0.8908\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4108 - accuracy: 0.8140 - mae: 0.2627 - mse: 0.1308 - auc_22: 0.8934\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4094 - accuracy: 0.8186 - mae: 0.2613 - mse: 0.1301 - auc_22: 0.8940\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4134 - accuracy: 0.8157 - mae: 0.2640 - mse: 0.1317 - auc_22: 0.8919\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4147 - accuracy: 0.8154 - mae: 0.2634 - mse: 0.1317 - auc_22: 0.8912\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4252 - accuracy: 0.8100 - mae: 0.2715 - mse: 0.1354 - auc_22: 0.8853\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4220 - accuracy: 0.8135 - mae: 0.2690 - mse: 0.1343 - auc_22: 0.8869\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4222 - accuracy: 0.8115 - mae: 0.2699 - mse: 0.1346 - auc_22: 0.8866\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4177 - accuracy: 0.8143 - mae: 0.2665 - mse: 0.1331 - auc_22: 0.8892\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4189 - accuracy: 0.8131 - mae: 0.2674 - mse: 0.1334 - auc_22: 0.8885\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4178 - accuracy: 0.8158 - mae: 0.2658 - mse: 0.1326 - auc_22: 0.8890\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4173 - accuracy: 0.8159 - mae: 0.2659 - mse: 0.1326 - auc_22: 0.8888\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4163 - accuracy: 0.8143 - mae: 0.2659 - mse: 0.1325 - auc_22: 0.8898\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4174 - accuracy: 0.8131 - mae: 0.2667 - mse: 0.1330 - auc_22: 0.8890\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4192 - accuracy: 0.8118 - mae: 0.2682 - mse: 0.1337 - auc_22: 0.8877\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4194 - accuracy: 0.8121 - mae: 0.2682 - mse: 0.1338 - auc_22: 0.8876\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4186 - accuracy: 0.8149 - mae: 0.2674 - mse: 0.1331 - auc_22: 0.8879\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "5\n",
      "249/249 [==============================] - 0s 2ms/step - loss: 0.2813 - accuracy: 0.8722 - mae: 0.1475 - mse: 0.0852 - auc_22: 0.7883\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6288\n",
      "Processing molecule 2000/6288\n",
      "Processing molecule 3000/6288\n",
      "Processing molecule 4000/6288\n",
      "Processing molecule 5000/6288\n",
      "Processing molecule 6000/6288\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5902\n",
      "Processing molecule 2000/5902\n",
      "Processing molecule 3000/5902\n",
      "Processing molecule 4000/5902\n",
      "Processing molecule 5000/5902\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5210\n",
      "Processing molecule 2000/5210\n",
      "Processing molecule 3000/5210\n",
      "Processing molecule 4000/5210\n",
      "Processing molecule 5000/5210\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5006\n",
      "Processing molecule 2000/5006\n",
      "Processing molecule 3000/5006\n",
      "Processing molecule 4000/5006\n",
      "Processing molecule 5000/5006\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4887\n",
      "Processing molecule 2000/4887\n",
      "Processing molecule 3000/4887\n",
      "Processing molecule 4000/4887\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5962\n",
      "Processing molecule 2000/5962\n",
      "Processing molecule 3000/5962\n",
      "Processing molecule 4000/5962\n",
      "Processing molecule 5000/5962\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5663\n",
      "Processing molecule 2000/5663\n",
      "Processing molecule 3000/5663\n",
      "Processing molecule 4000/5663\n",
      "Processing molecule 5000/5663\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4408\n",
      "Processing molecule 2000/4408\n",
      "Processing molecule 3000/4408\n",
      "Processing molecule 4000/4408\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6146\n",
      "Processing molecule 2000/6146\n",
      "Processing molecule 3000/6146\n",
      "Processing molecule 4000/6146\n",
      "Processing molecule 5000/6146\n",
      "Processing molecule 6000/6146\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5488\n",
      "Processing molecule 2000/5488\n",
      "Processing molecule 3000/5488\n",
      "Processing molecule 4000/5488\n",
      "Processing molecule 5000/5488\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4417\n",
      "Processing molecule 2000/4417\n",
      "Processing molecule 3000/4417\n",
      "Processing molecule 4000/4417\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5736\n",
      "Processing molecule 2000/5736\n",
      "Processing molecule 3000/5736\n",
      "Processing molecule 4000/5736\n",
      "Processing molecule 5000/5736\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6563\n",
      "Processing molecule 2000/6563\n",
      "Processing molecule 3000/6563\n",
      "Processing molecule 4000/6563\n",
      "Processing molecule 5000/6563\n",
      "Processing molecule 6000/6563\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6109\n",
      "Processing molecule 2000/6109\n",
      "Processing molecule 3000/6109\n",
      "Processing molecule 4000/6109\n",
      "Processing molecule 5000/6109\n",
      "Processing molecule 6000/6109\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5916\n",
      "Processing molecule 2000/5916\n",
      "Processing molecule 3000/5916\n",
      "Processing molecule 4000/5916\n",
      "Processing molecule 5000/5916\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5279\n",
      "Processing molecule 2000/5279\n",
      "Processing molecule 3000/5279\n",
      "Processing molecule 4000/5279\n",
      "Processing molecule 5000/5279\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5607\n",
      "Processing molecule 2000/5607\n",
      "Processing molecule 3000/5607\n",
      "Processing molecule 4000/5607\n",
      "Processing molecule 5000/5607\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6286\n",
      "Processing molecule 2000/6286\n",
      "Processing molecule 3000/6286\n",
      "Processing molecule 4000/6286\n",
      "Processing molecule 5000/6286\n",
      "Processing molecule 6000/6286\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5825\n",
      "Processing molecule 2000/5825\n",
      "Processing molecule 3000/5825\n",
      "Processing molecule 4000/5825\n",
      "Processing molecule 5000/5825\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5261\n",
      "Processing molecule 2000/5261\n",
      "Processing molecule 3000/5261\n",
      "Processing molecule 4000/5261\n",
      "Processing molecule 5000/5261\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6391\n",
      "Processing molecule 2000/6391\n",
      "Processing molecule 3000/6391\n",
      "Processing molecule 4000/6391\n",
      "Processing molecule 5000/6391\n",
      "Processing molecule 6000/6391\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5832\n",
      "Processing molecule 2000/5832\n",
      "Processing molecule 3000/5832\n",
      "Processing molecule 4000/5832\n",
      "Processing molecule 5000/5832\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5239\n",
      "Processing molecule 2000/5239\n",
      "Processing molecule 3000/5239\n",
      "Processing molecule 4000/5239\n",
      "Processing molecule 5000/5239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6117\n",
      "Processing molecule 2000/6117\n",
      "Processing molecule 3000/6117\n",
      "Processing molecule 4000/6117\n",
      "Processing molecule 5000/6117\n",
      "Processing molecule 6000/6117\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5312 - train negative label: 65113\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "up and down sampling => train positive label: 31872 - train negative label: 32556\n",
      "Test positive label: 550 - Test negative label: 6971\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.5669 - accuracy: 0.7172 - mae: 0.3826 - mse: 0.1904 - auc_23: 0.7853\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.5151 - accuracy: 0.7576 - mae: 0.3413 - mse: 0.1690 - auc_23: 0.8290\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.5004 - accuracy: 0.7654 - mae: 0.3304 - mse: 0.1634 - auc_23: 0.8392\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4889 - accuracy: 0.7719 - mae: 0.3213 - mse: 0.1590 - auc_23: 0.8472\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4783 - accuracy: 0.7796 - mae: 0.3128 - mse: 0.1550 - auc_23: 0.8541\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4727 - accuracy: 0.7819 - mae: 0.3094 - mse: 0.1531 - auc_23: 0.8578\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4646 - accuracy: 0.7854 - mae: 0.3023 - mse: 0.1500 - auc_23: 0.8632\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4567 - accuracy: 0.7912 - mae: 0.2966 - mse: 0.1470 - auc_23: 0.8681\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4514 - accuracy: 0.7923 - mae: 0.2925 - mse: 0.1451 - auc_23: 0.8716\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4447 - accuracy: 0.7960 - mae: 0.2876 - mse: 0.1429 - auc_23: 0.8754\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4397 - accuracy: 0.7968 - mae: 0.2841 - mse: 0.1412 - auc_23: 0.8784\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4371 - accuracy: 0.8004 - mae: 0.2826 - mse: 0.1402 - auc_23: 0.8798\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4325 - accuracy: 0.8022 - mae: 0.2787 - mse: 0.1384 - auc_23: 0.8827\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4262 - accuracy: 0.8044 - mae: 0.2741 - mse: 0.1362 - auc_23: 0.8863\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4245 - accuracy: 0.8071 - mae: 0.2729 - mse: 0.1356 - auc_23: 0.8872\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4219 - accuracy: 0.8077 - mae: 0.2711 - mse: 0.1348 - auc_23: 0.8884\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4166 - accuracy: 0.8110 - mae: 0.2668 - mse: 0.1327 - auc_23: 0.8914\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4146 - accuracy: 0.8122 - mae: 0.2651 - mse: 0.1318 - auc_23: 0.8925\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4122 - accuracy: 0.8120 - mae: 0.2639 - mse: 0.1314 - auc_23: 0.8935\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4095 - accuracy: 0.8157 - mae: 0.2617 - mse: 0.1303 - auc_23: 0.8950\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4066 - accuracy: 0.8156 - mae: 0.2600 - mse: 0.1294 - auc_23: 0.8964\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4056 - accuracy: 0.8156 - mae: 0.2596 - mse: 0.1291 - auc_23: 0.8970\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4015 - accuracy: 0.8183 - mae: 0.2561 - mse: 0.1276 - auc_23: 0.8991\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3996 - accuracy: 0.8196 - mae: 0.2548 - mse: 0.1268 - auc_23: 0.9000\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4025 - accuracy: 0.8175 - mae: 0.2568 - mse: 0.1281 - auc_23: 0.8984\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3981 - accuracy: 0.8208 - mae: 0.2537 - mse: 0.1262 - auc_23: 0.9010\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3991 - accuracy: 0.8209 - mae: 0.2543 - mse: 0.1268 - auc_23: 0.9001\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3947 - accuracy: 0.8233 - mae: 0.2513 - mse: 0.1251 - auc_23: 0.9024\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3981 - accuracy: 0.8220 - mae: 0.2534 - mse: 0.1266 - auc_23: 0.9003\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4021 - accuracy: 0.8198 - mae: 0.2570 - mse: 0.1280 - auc_23: 0.8980\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4023 - accuracy: 0.8200 - mae: 0.2563 - mse: 0.1277 - auc_23: 0.8980\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4052 - accuracy: 0.8193 - mae: 0.2583 - mse: 0.1286 - auc_23: 0.8964\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4025 - accuracy: 0.8211 - mae: 0.2562 - mse: 0.1276 - auc_23: 0.8979\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4021 - accuracy: 0.8216 - mae: 0.2556 - mse: 0.1274 - auc_23: 0.8980\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4009 - accuracy: 0.8211 - mae: 0.2550 - mse: 0.1272 - auc_23: 0.8986\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4010 - accuracy: 0.8206 - mae: 0.2551 - mse: 0.1274 - auc_23: 0.8982\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4010 - accuracy: 0.8224 - mae: 0.2549 - mse: 0.1271 - auc_23: 0.8985\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3995 - accuracy: 0.8219 - mae: 0.2542 - mse: 0.1266 - auc_23: 0.8991\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4012 - accuracy: 0.8206 - mae: 0.2546 - mse: 0.1270 - auc_23: 0.8983\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3947 - accuracy: 0.8246 - mae: 0.2509 - mse: 0.1249 - auc_23: 0.9013\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "82\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3942 - accuracy: 0.8253 - mae: 0.2499 - mse: 0.1247 - auc_23: 0.9017\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3970 - accuracy: 0.8245 - mae: 0.2519 - mse: 0.1255 - auc_23: 0.9003\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3940 - accuracy: 0.8246 - mae: 0.2500 - mse: 0.1249 - auc_23: 0.9015\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3951 - accuracy: 0.8246 - mae: 0.2507 - mse: 0.1252 - auc_23: 0.9009\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3948 - accuracy: 0.8240 - mae: 0.2506 - mse: 0.1250 - auc_23: 0.9011\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3942 - accuracy: 0.8254 - mae: 0.2502 - mse: 0.1248 - auc_23: 0.9015\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3923 - accuracy: 0.8249 - mae: 0.2488 - mse: 0.1242 - auc_23: 0.9023\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3902 - accuracy: 0.8271 - mae: 0.2476 - mse: 0.1235 - auc_23: 0.9031\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3891 - accuracy: 0.8290 - mae: 0.2464 - mse: 0.1230 - auc_23: 0.9037\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3941 - accuracy: 0.8245 - mae: 0.2507 - mse: 0.1251 - auc_23: 0.9004\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "5\n",
      "236/236 [==============================] - 0s 2ms/step - loss: 0.3027 - accuracy: 0.8474 - mae: 0.1661 - mse: 0.0950 - auc_23: 0.7737\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 1000/6276\n",
      "Processing molecule 2000/6276\n",
      "Processing molecule 3000/6276\n",
      "Processing molecule 4000/6276\n",
      "Processing molecule 5000/6276\n",
      "Processing molecule 6000/6276\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5888\n",
      "Processing molecule 2000/5888\n",
      "Processing molecule 3000/5888\n",
      "Processing molecule 4000/5888\n",
      "Processing molecule 5000/5888\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5204\n",
      "Processing molecule 2000/5204\n",
      "Processing molecule 3000/5204\n",
      "Processing molecule 4000/5204\n",
      "Processing molecule 5000/5204\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4986\n",
      "Processing molecule 2000/4986\n",
      "Processing molecule 3000/4986\n",
      "Processing molecule 4000/4986\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4893\n",
      "Processing molecule 2000/4893\n",
      "Processing molecule 3000/4893\n",
      "Processing molecule 4000/4893\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5972\n",
      "Processing molecule 2000/5972\n",
      "Processing molecule 3000/5972\n",
      "Processing molecule 4000/5972\n",
      "Processing molecule 5000/5972\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5650\n",
      "Processing molecule 2000/5650\n",
      "Processing molecule 3000/5650\n",
      "Processing molecule 4000/5650\n",
      "Processing molecule 5000/5650\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4408\n",
      "Processing molecule 2000/4408\n",
      "Processing molecule 3000/4408\n",
      "Processing molecule 4000/4408\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6150\n",
      "Processing molecule 2000/6150\n",
      "Processing molecule 3000/6150\n",
      "Processing molecule 4000/6150\n",
      "Processing molecule 5000/6150\n",
      "Processing molecule 6000/6150\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5481\n",
      "Processing molecule 2000/5481\n",
      "Processing molecule 3000/5481\n",
      "Processing molecule 4000/5481\n",
      "Processing molecule 5000/5481\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4405\n",
      "Processing molecule 2000/4405\n",
      "Processing molecule 3000/4405\n",
      "Processing molecule 4000/4405\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5731\n",
      "Processing molecule 2000/5731\n",
      "Processing molecule 3000/5731\n",
      "Processing molecule 4000/5731\n",
      "Processing molecule 5000/5731\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6547\n",
      "Processing molecule 2000/6547\n",
      "Processing molecule 3000/6547\n",
      "Processing molecule 4000/6547\n",
      "Processing molecule 5000/6547\n",
      "Processing molecule 6000/6547\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6100\n",
      "Processing molecule 2000/6100\n",
      "Processing molecule 3000/6100\n",
      "Processing molecule 4000/6100\n",
      "Processing molecule 5000/6100\n",
      "Processing molecule 6000/6100\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5896\n",
      "Processing molecule 2000/5896\n",
      "Processing molecule 3000/5896\n",
      "Processing molecule 4000/5896\n",
      "Processing molecule 5000/5896\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5257\n",
      "Processing molecule 2000/5257\n",
      "Processing molecule 3000/5257\n",
      "Processing molecule 4000/5257\n",
      "Processing molecule 5000/5257\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5585\n",
      "Processing molecule 2000/5585\n",
      "Processing molecule 3000/5585\n",
      "Processing molecule 4000/5585\n",
      "Processing molecule 5000/5585\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6275\n",
      "Processing molecule 2000/6275\n",
      "Processing molecule 3000/6275\n",
      "Processing molecule 4000/6275\n",
      "Processing molecule 5000/6275\n",
      "Processing molecule 6000/6275\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5817\n",
      "Processing molecule 2000/5817\n",
      "Processing molecule 3000/5817\n",
      "Processing molecule 4000/5817\n",
      "Processing molecule 5000/5817\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5246\n",
      "Processing molecule 2000/5246\n",
      "Processing molecule 3000/5246\n",
      "Processing molecule 4000/5246\n",
      "Processing molecule 5000/5246\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6387\n",
      "Processing molecule 2000/6387\n",
      "Processing molecule 3000/6387\n",
      "Processing molecule 4000/6387\n",
      "Processing molecule 5000/6387\n",
      "Processing molecule 6000/6387\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5825\n",
      "Processing molecule 2000/5825\n",
      "Processing molecule 3000/5825\n",
      "Processing molecule 4000/5825\n",
      "Processing molecule 5000/5825\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6104\n",
      "Processing molecule 2000/6104\n",
      "Processing molecule 3000/6104\n",
      "Processing molecule 4000/6104\n",
      "Processing molecule 5000/6104\n",
      "Processing molecule 6000/6104\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5226 - train negative label: 65044\n",
      "up and down sampling => train positive label: 31356 - train negative label: 32522\n",
      "Test positive label: 636 - Test negative label: 7040\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.5690 - accuracy: 0.7163 - mae: 0.3850 - mse: 0.1912 - auc_24: 0.7837\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.5161 - accuracy: 0.7556 - mae: 0.3420 - mse: 0.1692 - auc_24: 0.8281\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4980 - accuracy: 0.7663 - mae: 0.3279 - mse: 0.1624 - auc_24: 0.8408\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4855 - accuracy: 0.7726 - mae: 0.3191 - mse: 0.1579 - auc_24: 0.8492\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4740 - accuracy: 0.7794 - mae: 0.3100 - mse: 0.1537 - auc_24: 0.8569\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4659 - accuracy: 0.7857 - mae: 0.3034 - mse: 0.1503 - auc_24: 0.8625\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4606 - accuracy: 0.7884 - mae: 0.2992 - mse: 0.1485 - auc_24: 0.8657\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4546 - accuracy: 0.7938 - mae: 0.2944 - mse: 0.1461 - auc_24: 0.8697\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4489 - accuracy: 0.7957 - mae: 0.2904 - mse: 0.1442 - auc_24: 0.8729\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4416 - accuracy: 0.7994 - mae: 0.2853 - mse: 0.1416 - auc_24: 0.8772\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4367 - accuracy: 0.8026 - mae: 0.2812 - mse: 0.1398 - auc_24: 0.8801\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4317 - accuracy: 0.8056 - mae: 0.2779 - mse: 0.1379 - auc_24: 0.8831\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4268 - accuracy: 0.8088 - mae: 0.2746 - mse: 0.1361 - auc_24: 0.8858\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4253 - accuracy: 0.8096 - mae: 0.2729 - mse: 0.1358 - auc_24: 0.8865\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4198 - accuracy: 0.8137 - mae: 0.2687 - mse: 0.1335 - auc_24: 0.8896\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4174 - accuracy: 0.8140 - mae: 0.2674 - mse: 0.1328 - auc_24: 0.8909\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4188 - accuracy: 0.8145 - mae: 0.2678 - mse: 0.1331 - auc_24: 0.8902\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4163 - accuracy: 0.8151 - mae: 0.2664 - mse: 0.1323 - auc_24: 0.8917\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4157 - accuracy: 0.8148 - mae: 0.2659 - mse: 0.1322 - auc_24: 0.8918\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4121 - accuracy: 0.8161 - mae: 0.2636 - mse: 0.1309 - auc_24: 0.8938\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8162 - mae: 0.2627 - mse: 0.1307 - auc_24: 0.8943\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4094 - accuracy: 0.8186 - mae: 0.2613 - mse: 0.1299 - auc_24: 0.8952\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4109 - accuracy: 0.8163 - mae: 0.2624 - mse: 0.1305 - auc_24: 0.8944\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4063 - accuracy: 0.8184 - mae: 0.2594 - mse: 0.1291 - auc_24: 0.8966\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4162 - accuracy: 0.8152 - mae: 0.2665 - mse: 0.1326 - auc_24: 0.8910\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4139 - accuracy: 0.8156 - mae: 0.2644 - mse: 0.1318 - auc_24: 0.8923\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4155 - accuracy: 0.8133 - mae: 0.2658 - mse: 0.1325 - auc_24: 0.8913\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4136 - accuracy: 0.8144 - mae: 0.2650 - mse: 0.1318 - auc_24: 0.8925\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4093 - accuracy: 0.8175 - mae: 0.2618 - mse: 0.1302 - auc_24: 0.8948\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4107 - accuracy: 0.8180 - mae: 0.2628 - mse: 0.1308 - auc_24: 0.8937\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "240/240 [==============================] - 0s 2ms/step - loss: 0.3089 - accuracy: 0.8498 - mae: 0.1793 - mse: 0.0950 - auc_24: 0.7875\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6260\n",
      "Processing molecule 2000/6260\n",
      "Processing molecule 3000/6260\n",
      "Processing molecule 4000/6260\n",
      "Processing molecule 5000/6260\n",
      "Processing molecule 6000/6260\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5850\n",
      "Processing molecule 2000/5850\n",
      "Processing molecule 3000/5850\n",
      "Processing molecule 4000/5850\n",
      "Processing molecule 5000/5850\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5179\n",
      "Processing molecule 2000/5179\n",
      "Processing molecule 3000/5179\n",
      "Processing molecule 4000/5179\n",
      "Processing molecule 5000/5179\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4959\n",
      "Processing molecule 2000/4959\n",
      "Processing molecule 3000/4959\n",
      "Processing molecule 4000/4959\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4851\n",
      "Processing molecule 2000/4851\n",
      "Processing molecule 3000/4851\n",
      "Processing molecule 4000/4851\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5936\n",
      "Processing molecule 2000/5936\n",
      "Processing molecule 3000/5936\n",
      "Processing molecule 4000/5936\n",
      "Processing molecule 5000/5936\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5622\n",
      "Processing molecule 2000/5622\n",
      "Processing molecule 3000/5622\n",
      "Processing molecule 4000/5622\n",
      "Processing molecule 5000/5622\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4378\n",
      "Processing molecule 2000/4378\n",
      "Processing molecule 3000/4378\n",
      "Processing molecule 4000/4378\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6123\n",
      "Processing molecule 2000/6123\n",
      "Processing molecule 3000/6123\n",
      "Processing molecule 4000/6123\n",
      "Processing molecule 5000/6123\n",
      "Processing molecule 6000/6123\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5477\n",
      "Processing molecule 2000/5477\n",
      "Processing molecule 3000/5477\n",
      "Processing molecule 4000/5477\n",
      "Processing molecule 5000/5477\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4389\n",
      "Processing molecule 2000/4389\n",
      "Processing molecule 3000/4389\n",
      "Processing molecule 4000/4389\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5706\n",
      "Processing molecule 2000/5706\n",
      "Processing molecule 3000/5706\n",
      "Processing molecule 4000/5706\n",
      "Processing molecule 5000/5706\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6540\n",
      "Processing molecule 2000/6540\n",
      "Processing molecule 3000/6540\n",
      "Processing molecule 4000/6540\n",
      "Processing molecule 5000/6540\n",
      "Processing molecule 6000/6540\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6069\n",
      "Processing molecule 2000/6069\n",
      "Processing molecule 3000/6069\n",
      "Processing molecule 4000/6069\n",
      "Processing molecule 5000/6069\n",
      "Processing molecule 6000/6069\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5874\n",
      "Processing molecule 2000/5874\n",
      "Processing molecule 3000/5874\n",
      "Processing molecule 4000/5874\n",
      "Processing molecule 5000/5874\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5564\n",
      "Processing molecule 2000/5564\n",
      "Processing molecule 3000/5564\n",
      "Processing molecule 4000/5564\n",
      "Processing molecule 5000/5564\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6248\n",
      "Processing molecule 2000/6248\n",
      "Processing molecule 3000/6248\n",
      "Processing molecule 4000/6248\n",
      "Processing molecule 5000/6248\n",
      "Processing molecule 6000/6248\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5790\n",
      "Processing molecule 2000/5790\n",
      "Processing molecule 3000/5790\n",
      "Processing molecule 4000/5790\n",
      "Processing molecule 5000/5790\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5237\n",
      "Processing molecule 2000/5237\n",
      "Processing molecule 3000/5237\n",
      "Processing molecule 4000/5237\n",
      "Processing molecule 5000/5237\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6356\n",
      "Processing molecule 2000/6356\n",
      "Processing molecule 3000/6356\n",
      "Processing molecule 4000/6356\n",
      "Processing molecule 5000/6356\n",
      "Processing molecule 6000/6356\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5813\n",
      "Processing molecule 2000/5813\n",
      "Processing molecule 3000/5813\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 4000/5813\n",
      "Processing molecule 5000/5813\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5224\n",
      "Processing molecule 2000/5224\n",
      "Processing molecule 3000/5224\n",
      "Processing molecule 4000/5224\n",
      "Processing molecule 5000/5224\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6093\n",
      "Processing molecule 2000/6093\n",
      "Processing molecule 3000/6093\n",
      "Processing molecule 4000/6093\n",
      "Processing molecule 5000/6093\n",
      "Processing molecule 6000/6093\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5309 - train negative label: 64730\n",
      "up and down sampling => train positive label: 31854 - train negative label: 32365\n",
      "Test positive label: 553 - Test negative label: 7354\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.5775 - accuracy: 0.7105 - mae: 0.3899 - mse: 0.1949 - auc_25: 0.7744\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.5216 - accuracy: 0.7562 - mae: 0.3453 - mse: 0.1714 - auc_25: 0.8237\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.5033 - accuracy: 0.7664 - mae: 0.3311 - mse: 0.1642 - auc_25: 0.8370\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4897 - accuracy: 0.7715 - mae: 0.3208 - mse: 0.1593 - auc_25: 0.8464\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4785 - accuracy: 0.7772 - mae: 0.3134 - mse: 0.1554 - auc_25: 0.8537\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4705 - accuracy: 0.7831 - mae: 0.3068 - mse: 0.1521 - auc_25: 0.8593\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4624 - accuracy: 0.7874 - mae: 0.3002 - mse: 0.1490 - auc_25: 0.8649\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4567 - accuracy: 0.7906 - mae: 0.2965 - mse: 0.1471 - auc_25: 0.8680\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4513 - accuracy: 0.7926 - mae: 0.2922 - mse: 0.1451 - auc_25: 0.8716\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4447 - accuracy: 0.7962 - mae: 0.2878 - mse: 0.1428 - auc_25: 0.8753\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4375 - accuracy: 0.8010 - mae: 0.2818 - mse: 0.1401 - auc_25: 0.8797\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4343 - accuracy: 0.8027 - mae: 0.2799 - mse: 0.1390 - auc_25: 0.8815\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4295 - accuracy: 0.8061 - mae: 0.2760 - mse: 0.1372 - auc_25: 0.8842\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4248 - accuracy: 0.8075 - mae: 0.2727 - mse: 0.1354 - auc_25: 0.8871\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4211 - accuracy: 0.8092 - mae: 0.2699 - mse: 0.1342 - auc_25: 0.8891\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4154 - accuracy: 0.8129 - mae: 0.2658 - mse: 0.1324 - auc_25: 0.8920\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4149 - accuracy: 0.8123 - mae: 0.2657 - mse: 0.1322 - auc_25: 0.8922\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4132 - accuracy: 0.8135 - mae: 0.2642 - mse: 0.1317 - auc_25: 0.8930\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4093 - accuracy: 0.8153 - mae: 0.2621 - mse: 0.1301 - auc_25: 0.8953\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4091 - accuracy: 0.8149 - mae: 0.2615 - mse: 0.1303 - auc_25: 0.8952\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4066 - accuracy: 0.8168 - mae: 0.2598 - mse: 0.1294 - auc_25: 0.8965\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4045 - accuracy: 0.8179 - mae: 0.2577 - mse: 0.1283 - auc_25: 0.8977\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4019 - accuracy: 0.8193 - mae: 0.2560 - mse: 0.1276 - auc_25: 0.8989\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3994 - accuracy: 0.8210 - mae: 0.2548 - mse: 0.1268 - auc_25: 0.9002\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3972 - accuracy: 0.8215 - mae: 0.2531 - mse: 0.1262 - auc_25: 0.9011\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3967 - accuracy: 0.8230 - mae: 0.2519 - mse: 0.1257 - auc_25: 0.9016\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3969 - accuracy: 0.8221 - mae: 0.2531 - mse: 0.1262 - auc_25: 0.9010\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3959 - accuracy: 0.8219 - mae: 0.2519 - mse: 0.1257 - auc_25: 0.9016\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3950 - accuracy: 0.8219 - mae: 0.2516 - mse: 0.1256 - auc_25: 0.9019\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3940 - accuracy: 0.8253 - mae: 0.2506 - mse: 0.1250 - auc_25: 0.9025\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3947 - accuracy: 0.8241 - mae: 0.2506 - mse: 0.1252 - auc_25: 0.9024\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3915 - accuracy: 0.8243 - mae: 0.2498 - mse: 0.1244 - auc_25: 0.9036\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3962 - accuracy: 0.8236 - mae: 0.2518 - mse: 0.1257 - auc_25: 0.9016\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3972 - accuracy: 0.8237 - mae: 0.2522 - mse: 0.1259 - auc_25: 0.9008\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3979 - accuracy: 0.8230 - mae: 0.2529 - mse: 0.1263 - auc_25: 0.9004\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3981 - accuracy: 0.8218 - mae: 0.2540 - mse: 0.1264 - auc_25: 0.9006\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4002 - accuracy: 0.8218 - mae: 0.2552 - mse: 0.1273 - auc_25: 0.8990\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4019 - accuracy: 0.8205 - mae: 0.2560 - mse: 0.1276 - auc_25: 0.8982\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4010 - accuracy: 0.8219 - mae: 0.2548 - mse: 0.1273 - auc_25: 0.8986\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4001 - accuracy: 0.8198 - mae: 0.2547 - mse: 0.1271 - auc_25: 0.8991\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4036 - accuracy: 0.8200 - mae: 0.2570 - mse: 0.1284 - auc_25: 0.8971\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4007 - accuracy: 0.8204 - mae: 0.2552 - mse: 0.1273 - auc_25: 0.8986\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4029 - accuracy: 0.8201 - mae: 0.2565 - mse: 0.1282 - auc_25: 0.8974\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4151 - accuracy: 0.8142 - mae: 0.2655 - mse: 0.1325 - auc_25: 0.8905\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4158 - accuracy: 0.8130 - mae: 0.2663 - mse: 0.1329 - auc_25: 0.8898\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4141 - accuracy: 0.8128 - mae: 0.2655 - mse: 0.1322 - auc_25: 0.8910\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4152 - accuracy: 0.8137 - mae: 0.2653 - mse: 0.1326 - auc_25: 0.8901\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4168 - accuracy: 0.8116 - mae: 0.2671 - mse: 0.1335 - auc_25: 0.8884\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4194 - accuracy: 0.8114 - mae: 0.2683 - mse: 0.1341 - auc_25: 0.8873\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4157 - accuracy: 0.8144 - mae: 0.2660 - mse: 0.1326 - auc_25: 0.8891\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4152 - accuracy: 0.8135 - mae: 0.2654 - mse: 0.1327 - auc_25: 0.8891\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4174 - accuracy: 0.8126 - mae: 0.2668 - mse: 0.1333 - auc_25: 0.8879\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4165 - accuracy: 0.8125 - mae: 0.2670 - mse: 0.1331 - auc_25: 0.8885\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4141 - accuracy: 0.8134 - mae: 0.2652 - mse: 0.1324 - auc_25: 0.8898\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4127 - accuracy: 0.8161 - mae: 0.2635 - mse: 0.1317 - auc_25: 0.8904\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4165 - accuracy: 0.8135 - mae: 0.2666 - mse: 0.1332 - auc_25: 0.8880\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4265 - accuracy: 0.8086 - mae: 0.2739 - mse: 0.1367 - auc_25: 0.8813\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4246 - accuracy: 0.8077 - mae: 0.2728 - mse: 0.1363 - auc_25: 0.8826\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4263 - accuracy: 0.8081 - mae: 0.2741 - mse: 0.1370 - auc_25: 0.8815\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4241 - accuracy: 0.8082 - mae: 0.2722 - mse: 0.1361 - auc_25: 0.8827\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4252 - accuracy: 0.8085 - mae: 0.2734 - mse: 0.1363 - auc_25: 0.8825\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4247 - accuracy: 0.8078 - mae: 0.2730 - mse: 0.1363 - auc_25: 0.8820\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4219 - accuracy: 0.8101 - mae: 0.2712 - mse: 0.1353 - auc_25: 0.8833\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4244 - accuracy: 0.8081 - mae: 0.2722 - mse: 0.1361 - auc_25: 0.8823\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4225 - accuracy: 0.8084 - mae: 0.2714 - mse: 0.1357 - auc_25: 0.8831\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4203 - accuracy: 0.8090 - mae: 0.2702 - mse: 0.1348 - auc_25: 0.8845\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4232 - accuracy: 0.8080 - mae: 0.2724 - mse: 0.1361 - auc_25: 0.8827\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4220 - accuracy: 0.8098 - mae: 0.2709 - mse: 0.1353 - auc_25: 0.8833\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4219 - accuracy: 0.8088 - mae: 0.2707 - mse: 0.1353 - auc_25: 0.8837\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4294 - accuracy: 0.8042 - mae: 0.2772 - mse: 0.1382 - auc_25: 0.8793\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4273 - accuracy: 0.8057 - mae: 0.2750 - mse: 0.1374 - auc_25: 0.8805\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4261 - accuracy: 0.8065 - mae: 0.2742 - mse: 0.1369 - auc_25: 0.8811\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4279 - accuracy: 0.8041 - mae: 0.2758 - mse: 0.1377 - auc_25: 0.8803\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4282 - accuracy: 0.8061 - mae: 0.2753 - mse: 0.1378 - auc_25: 0.8796\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4243 - accuracy: 0.8059 - mae: 0.2740 - mse: 0.1367 - auc_25: 0.8815\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4259 - accuracy: 0.8058 - mae: 0.2745 - mse: 0.1370 - auc_25: 0.8813\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4284 - accuracy: 0.8039 - mae: 0.2757 - mse: 0.1381 - auc_25: 0.8795\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4261 - accuracy: 0.8066 - mae: 0.2746 - mse: 0.1371 - auc_25: 0.8810\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4235 - accuracy: 0.8084 - mae: 0.2722 - mse: 0.1362 - auc_25: 0.8819\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4232 - accuracy: 0.8076 - mae: 0.2730 - mse: 0.1361 - auc_25: 0.8825\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "8\n",
      "248/248 [==============================] - 1s 2ms/step - loss: 0.2902 - accuracy: 0.8921 - mae: 0.1564 - mse: 0.0810 - auc_25: 0.7536\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6261\n",
      "Processing molecule 2000/6261\n",
      "Processing molecule 3000/6261\n",
      "Processing molecule 4000/6261\n",
      "Processing molecule 5000/6261\n",
      "Processing molecule 6000/6261\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5862\n",
      "Processing molecule 2000/5862\n",
      "Processing molecule 3000/5862\n",
      "Processing molecule 4000/5862\n",
      "Processing molecule 5000/5862\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5216\n",
      "Processing molecule 2000/5216\n",
      "Processing molecule 3000/5216\n",
      "Processing molecule 4000/5216\n",
      "Processing molecule 5000/5216\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4960\n",
      "Processing molecule 2000/4960\n",
      "Processing molecule 3000/4960\n",
      "Processing molecule 4000/4960\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4847\n",
      "Processing molecule 2000/4847\n",
      "Processing molecule 3000/4847\n",
      "Processing molecule 4000/4847\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5940\n",
      "Processing molecule 2000/5940\n",
      "Processing molecule 3000/5940\n",
      "Processing molecule 4000/5940\n",
      "Processing molecule 5000/5940\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5629\n",
      "Processing molecule 2000/5629\n",
      "Processing molecule 3000/5629\n",
      "Processing molecule 4000/5629\n",
      "Processing molecule 5000/5629\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4418\n",
      "Processing molecule 2000/4418\n",
      "Processing molecule 3000/4418\n",
      "Processing molecule 4000/4418\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6108\n",
      "Processing molecule 2000/6108\n",
      "Processing molecule 3000/6108\n",
      "Processing molecule 4000/6108\n",
      "Processing molecule 5000/6108\n",
      "Processing molecule 6000/6108\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5504\n",
      "Processing molecule 2000/5504\n",
      "Processing molecule 3000/5504\n",
      "Processing molecule 4000/5504\n",
      "Processing molecule 5000/5504\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4397\n",
      "Processing molecule 2000/4397\n",
      "Processing molecule 3000/4397\n",
      "Processing molecule 4000/4397\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5696\n",
      "Processing molecule 2000/5696\n",
      "Processing molecule 3000/5696\n",
      "Processing molecule 4000/5696\n",
      "Processing molecule 5000/5696\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6531\n",
      "Processing molecule 2000/6531\n",
      "Processing molecule 3000/6531\n",
      "Processing molecule 4000/6531\n",
      "Processing molecule 5000/6531\n",
      "Processing molecule 6000/6531\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6072\n",
      "Processing molecule 2000/6072\n",
      "Processing molecule 3000/6072\n",
      "Processing molecule 4000/6072\n",
      "Processing molecule 5000/6072\n",
      "Processing molecule 6000/6072\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5901\n",
      "Processing molecule 2000/5901\n",
      "Processing molecule 3000/5901\n",
      "Processing molecule 4000/5901\n",
      "Processing molecule 5000/5901\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5226\n",
      "Processing molecule 2000/5226\n",
      "Processing molecule 3000/5226\n",
      "Processing molecule 4000/5226\n",
      "Processing molecule 5000/5226\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5557\n",
      "Processing molecule 2000/5557\n",
      "Processing molecule 3000/5557\n",
      "Processing molecule 4000/5557\n",
      "Processing molecule 5000/5557\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6245\n",
      "Processing molecule 2000/6245\n",
      "Processing molecule 3000/6245\n",
      "Processing molecule 4000/6245\n",
      "Processing molecule 5000/6245\n",
      "Processing molecule 6000/6245\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5796\n",
      "Processing molecule 2000/5796\n",
      "Processing molecule 3000/5796\n",
      "Processing molecule 4000/5796\n",
      "Processing molecule 5000/5796\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5266\n",
      "Processing molecule 2000/5266\n",
      "Processing molecule 3000/5266\n",
      "Processing molecule 4000/5266\n",
      "Processing molecule 5000/5266\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6351\n",
      "Processing molecule 2000/6351\n",
      "Processing molecule 3000/6351\n",
      "Processing molecule 4000/6351\n",
      "Processing molecule 5000/6351\n",
      "Processing molecule 6000/6351\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5835\n",
      "Processing molecule 2000/5835\n",
      "Processing molecule 3000/5835\n",
      "Processing molecule 4000/5835\n",
      "Processing molecule 5000/5835\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5218\n",
      "Processing molecule 2000/5218\n",
      "Processing molecule 3000/5218\n",
      "Processing molecule 4000/5218\n",
      "Processing molecule 5000/5218\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6086\n",
      "Processing molecule 2000/6086\n",
      "Processing molecule 3000/6086\n",
      "Processing molecule 4000/6086\n",
      "Processing molecule 5000/6086\n",
      "Processing molecule 6000/6086\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5246 - train negative label: 64838\n",
      "up and down sampling => train positive label: 31476 - train negative label: 32419\n",
      "Test positive label: 616 - Test negative label: 7246\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.5708 - accuracy: 0.7172 - mae: 0.3853 - mse: 0.1917 - auc_26: 0.7833\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.5201 - accuracy: 0.7564 - mae: 0.3450 - mse: 0.1708 - auc_26: 0.8250\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.5040 - accuracy: 0.7656 - mae: 0.3321 - mse: 0.1646 - auc_26: 0.8369\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4939 - accuracy: 0.7700 - mae: 0.3250 - mse: 0.1609 - auc_26: 0.8438\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4820 - accuracy: 0.7752 - mae: 0.3161 - mse: 0.1567 - auc_26: 0.8516\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4766 - accuracy: 0.7785 - mae: 0.3122 - mse: 0.1545 - auc_26: 0.8555\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4681 - accuracy: 0.7827 - mae: 0.3052 - mse: 0.1513 - auc_26: 0.8611\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4597 - accuracy: 0.7889 - mae: 0.2992 - mse: 0.1483 - auc_26: 0.8661\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4543 - accuracy: 0.7915 - mae: 0.2951 - mse: 0.1463 - auc_26: 0.8695\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4499 - accuracy: 0.7943 - mae: 0.2914 - mse: 0.1446 - auc_26: 0.8723\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4439 - accuracy: 0.7982 - mae: 0.2869 - mse: 0.1424 - auc_26: 0.8757\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4403 - accuracy: 0.7991 - mae: 0.2840 - mse: 0.1411 - auc_26: 0.8780\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4375 - accuracy: 0.8013 - mae: 0.2828 - mse: 0.1401 - auc_26: 0.8794\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4326 - accuracy: 0.8039 - mae: 0.2783 - mse: 0.1383 - auc_26: 0.8824\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4289 - accuracy: 0.8054 - mae: 0.2765 - mse: 0.1370 - auc_26: 0.8844\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4259 - accuracy: 0.8066 - mae: 0.2738 - mse: 0.1358 - auc_26: 0.8862\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4228 - accuracy: 0.8092 - mae: 0.2712 - mse: 0.1349 - auc_26: 0.8877\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4224 - accuracy: 0.8085 - mae: 0.2710 - mse: 0.1347 - auc_26: 0.8879\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4228 - accuracy: 0.8094 - mae: 0.2714 - mse: 0.1349 - auc_26: 0.8876\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4205 - accuracy: 0.8112 - mae: 0.2695 - mse: 0.1341 - auc_26: 0.8885\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4147 - accuracy: 0.8143 - mae: 0.2657 - mse: 0.1320 - auc_26: 0.8920\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4169 - accuracy: 0.8131 - mae: 0.2665 - mse: 0.1328 - auc_26: 0.8907\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4242 - accuracy: 0.8100 - mae: 0.2719 - mse: 0.1353 - auc_26: 0.8864\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4223 - accuracy: 0.8116 - mae: 0.2703 - mse: 0.1346 - auc_26: 0.8875\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4235 - accuracy: 0.8102 - mae: 0.2707 - mse: 0.1349 - auc_26: 0.8869\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4236 - accuracy: 0.8111 - mae: 0.2711 - mse: 0.1347 - auc_26: 0.8869\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4224 - accuracy: 0.8122 - mae: 0.2699 - mse: 0.1344 - auc_26: 0.8875\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4205 - accuracy: 0.8132 - mae: 0.2683 - mse: 0.1336 - auc_26: 0.8882\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4168 - accuracy: 0.8147 - mae: 0.2653 - mse: 0.1322 - auc_26: 0.8904\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4118 - accuracy: 0.8171 - mae: 0.2623 - mse: 0.1306 - auc_26: 0.8931\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "246/246 [==============================] - 0s 2ms/step - loss: 0.3158 - accuracy: 0.8451 - mae: 0.1996 - mse: 0.0995 - auc_26: 0.7923\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "\n",
    "Epoch_S = 10\n",
    "\n",
    "def evaluate_model(df, k = 10 , shuffle = False, tasks = tox21_tasks):\n",
    "    result =[]    \n",
    "\n",
    "    kf = KFold(n_splits=10, shuffle= shuffle, random_state=None)\n",
    "    \n",
    "    for train_index, test_index in kf.split(df):\n",
    "\n",
    "        train = df.iloc[train_index]\n",
    "        test =  df.iloc[test_index]\n",
    "        \n",
    "        #Calculation of embedded vectors for each class\n",
    "        df_train_positive, df_train_negative = Separate_active_and_inactive_data(train, tasks)\n",
    "        df_test_positive, df_test_negative = Separate_active_and_inactive_data(test, tasks)\n",
    "        \n",
    "        dataset_positive_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_positive]\n",
    "        dataset_negative_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_negative]   \n",
    "        dataset_positive_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_positive]\n",
    "        dataset_negative_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_negative]\n",
    "        \n",
    "        embed_class_muv_train = get_embedding_vector_class(dataset_positive_train, dataset_negative_train, radius=2, size = 512)\n",
    "        embed_class_muv_test = get_embedding_vector_class(dataset_positive_test, dataset_negative_test, radius=2, size = 512)\n",
    "       \n",
    "        #create_dataset       \n",
    "        train_notnan = del_nan (train, tasks)\n",
    "        test_notnan = del_nan (test, tasks)\n",
    "\n",
    "        train_dataset = [DATASET(d, smiles_to_bigraph, CanonicalAtomFeaturizer(), cache_file_path = cache_path) for d in train_notnan]\n",
    "        test_dataset = [DATASET(d, smiles_to_bigraph, CanonicalAtomFeaturizer(), cache_file_path = cache_path) for d in test_notnan]\n",
    "          \n",
    "        train_ds = create_dataset_with_gcn(train_dataset, embed_class_muv_train, gcn_model, tasks)\n",
    "        valid_ds = create_dataset_with_gcn(test_dataset, embed_class_muv_test, gcn_model, tasks)\n",
    "        \n",
    "        label_pos , label_neg, _ , _ = count_lablel(train_ds)\n",
    "        print(f'train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "        \n",
    "        train_ds = up_and_down_Samplenig(train_ds, scale_downsampling = 0.5)\n",
    "        \n",
    "        label_pos , label_neg , _ , _ = count_lablel(train_ds)\n",
    "        print(f'up and down sampling => train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "\n",
    "        label_pos , label_neg, _ , _ = count_lablel(valid_ds)\n",
    "        print(f'Test positive label: {label_pos} - Test negative label: {label_neg}')\n",
    "\n",
    "        l_train = []\n",
    "        r_train = []\n",
    "        lbls_train = []\n",
    "        \n",
    "        l_valid = []\n",
    "        r_valid = []\n",
    "        lbls_valid = []\n",
    "\n",
    "        for i , data in enumerate(train_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_train.append(embbed_drug[0])\n",
    "            r_train.append(embbed_task)\n",
    "            lbls_train.append(lbl.tolist())\n",
    "        \n",
    "        for i , data in enumerate(valid_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_valid.append(embbed_drug[0])\n",
    "            r_valid.append(embbed_task)\n",
    "            lbls_valid.append(lbl.tolist())\n",
    "\n",
    "        l_train = np.array(l_train).reshape(-1,128,1)\n",
    "        r_train = np.array(r_train).reshape(-1,512,1)\n",
    "        lbls_train = np.array(lbls_train)\n",
    "\n",
    "        l_valid = np.array(l_valid).reshape(-1,128,1)\n",
    "        r_valid = np.array(r_valid).reshape(-1,512,1)\n",
    "        lbls_valid = np.array(lbls_valid)\n",
    "\n",
    "        # create neural network model\n",
    "        siamese_net = siamese_model_Canonical_muv()\n",
    "        history = History()\n",
    "        P = siamese_net.fit([l_train, r_train], lbls_train, epochs = Epoch_S, batch_size = 128, callbacks=[history])\n",
    "\n",
    "        for j in range(100):\n",
    "            C=1\n",
    "            Before = int(P.history['accuracy'][-1]*100)\n",
    "            for i in range(2,Epoch_S+1):\n",
    "                if  int(P.history['accuracy'][-i]*100)== Before:\n",
    "                    C=C+1\n",
    "                else:\n",
    "                    C=1\n",
    "                Before=int(P.history['accuracy'][-i]*100)\n",
    "                print(Before)\n",
    "            if C==Epoch_S:\n",
    "                break\n",
    "            P = siamese_net.fit([l_train, r_train], lbls_train, epochs = Epoch_S, batch_size = 128, callbacks=[history])\n",
    "        print(j+1)\n",
    "        \n",
    "        score  = siamese_net.evaluate([l_valid,r_valid],lbls_valid, verbose=1)\n",
    "        a = (score[1],score[4])\n",
    "        result.append(a)\n",
    "    \n",
    "    return result\n",
    " \n",
    " \n",
    "scores = evaluate_model(df, 10, False, tox21_tasks)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Dropout = 0.3 and downsampling = 0.5 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.8368595242500305, 0.7961744070053101),\n",
       " (0.8724093437194824, 0.7901719808578491),\n",
       " (0.891804575920105, 0.8238518834114075),\n",
       " (0.8417275547981262, 0.8028419017791748),\n",
       " (0.9066919088363647, 0.7792837619781494),\n",
       " (0.8721559047698975, 0.7883057594299316),\n",
       " (0.8473607301712036, 0.7736819386482239),\n",
       " (0.8497915863990784, 0.7874884605407715),\n",
       " (0.892120897769928, 0.7536473274230957),\n",
       " (0.8450775742530823, 0.7922624349594116)]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy= 0.8655999600887299 AUC= 0.7887709856033325 STD_AUC= 0.017466662954986615\n"
     ]
    }
   ],
   "source": [
    "acc = []\n",
    "auc = []\n",
    "for i in scores:\n",
    "    acc.append(i[0])\n",
    "    auc.append(i[1])\n",
    "\n",
    "print(f'accuracy= {np.mean(acc)} AUC= {np.mean(auc)} STD_AUC= {np.std(auc)}')"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [
    "6grIE_JeqkUZ"
   ],
   "provenance": []
  },
  "gpuClass": "standard",
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.16"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
